Как проверить если список пуст в Python

Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
По статье задано0 вопрос(ов)
Подписка на обсуждение 4
Подписка на раздел 73
Вам это нравится? Поделитесь в социальных сетях!

- Анатолий Жучков
- #
- 13 апреля 2020 г. 16:25
#empty list list_1 = [] #ноль, пустой кортеж, пустой список, пустая строка принимаются как False if not list_1: print('yes! the list is empty.')
- Ильнур Гайфутдинов
- #
- 14 апреля 2020 г. 8:12
- (ред.)
Автор, очень плохой совет, не делайте так никогда.
делайте как написал Анатолий Жучков, в коментариях

- Said Py → Анатолий Жучков
- #
- 15 апреля 2020 г. 3:16
thanks
but if i wanna to check if list is exists how can i do that?

- Evgenii Legotckoi → Said Py
- #
- 15 апреля 2020 г. 10:11
It works similar. If list not exists, then list is None
if list_1: print('yes! the list is not None')Therefore the following code is right
list_1 = None if not list_1: print('the list is empty or None')
- Evgenii Legotckoi → Said Py
- #
- 15 апреля 2020 г. 10:16
I am admin of this site, and I want ask you add special separator in your articles, like this
This is special separator, which separate preview part from main part of article. Please, use it in articles (notes) on this site.
I think you saw some changes in articles after first publication. Just I made moderation and some cleaning of article for improvement of content.
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Последние комментарии

EVA25 декабря 2023 г. 21:30
Boost - статическая линковка в CMake проекте под Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
JonnyJo25 декабря 2023 г. 19:38
Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
Gvozdik19 декабря 2023 г. 8:01
Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.

Evgenii Legotckoi15 декабря 2023 г. 22:07
Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC По существу выглядит так, что нужно добавить ещё одну строку; LIBS += -LC:/path/to/winsock2/lib -lWS2_32 Вот только у вас ещё должна быть эта библиотека winsock2 скачана и находится по э…
JonnyJo15 декабря 2023 г. 21:08
Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Евгений, благодарю: с тем вопросом разобрался. Но никак не могу разобрать уже другую Нашёл пару советов в форуме Qt и stackoverflow, но не понимаю как их реализ…
Сейчас обсуждают на форуме

BlinCT27 декабря 2023 г. 19:57
Растягивать Image на парент по высоте Ну и само собою дял включения scrollbar надо чтобы был Flickable. Так что выходит как то так Flickable< id: root anchors.fill: parent clip: true property url linkFile p…

Evgenii Legotckoi12 декабря 2023 г. 17:48
Побуквенное сравнение двух строк Добрый день. Там случайно не высылается этот сигнал textChanged ещё и при форматировани текста? Если решиать в лоб, то можно просто отключать сигнал/слотовое соединение внутри слота и …

BlinCT30 ноября 2023 г. 20:18
Сборка проекта Qt6 из под винды на удаленой машине Всем привет. Сталкнулся с такой странностью: надо собирать проект из под 10 винды на удаленой линуксовой машине, проект строится на QT6, но вот когда cmake генерит свой кеш то вылитает…

Evgenii Legotckoi19 ноября 2023 г. 19:14
CKEditor 5 и подсветка синтаксиса. Добрый день. Я устал разбираться с CKEditor и просто перешёл на использование самописного markdown редактора.
Python: проверка на пустоту файла или каталога
Python имеет набор встроенных библиотечных объектов и функций, которые помогут нам в решении этой задачи. В этом руководстве мы узнаем, как проверить, пуст ли файл или каталог в Python.
Определение файл или каталог
Когда мы хотим проверить, пуст ли путь или нет, мы захотим узнать, является ли он файлом или каталогом, поскольку это влияет на подход, который мы хотим использовать.
Допустим, у нас есть две переменные - dirpath и filepath идентифицирующие локальный каталог и файл:
dirpath = '/mnt/f/code.books/articles/python' filepath = '/mnt/f/code.books/articles/python/code/file_dir.py'
Использование os.path
Python предоставляет модуль os , который представляет собой стандартный пакет Python функций, объектов и констант для работы с операционной системой.
os.path предоставляет нам функции isfile() и isdir() с помощью которых легко отличить файл и директорию:
import os dirpath = '/mnt/f/code.books/articles/python' filepath = '/mnt/f/code.books/articles/python/code/file_dir.py' os.path.isfile(dirpath) # False os.path.isdir(dirpath) # True os.path.isfile(filepath) # True os.path.isdir(filepath) # False
Обе эти функции возвращают Boolean значение.
Использование pathlib
Python 3.4 представил модуль pathlib , который предоставляет объектно-ориентированный интерфейс для работы с файловыми системами.
pathlib упрощает работу с файловыми системами по сравнению с os или os.path .
Класс Path модуля pathlib принимает путь в качестве аргумента и возвращает объект Path , который можно легко запросить или связать с помощью методов и атрибутов:
from pathlib import Path dirpath = '/mnt/f/code.books/articles/python' filepath = '/mnt/f/code.books/articles/python/code/file_dir.py' Path(dirpath).is_file() # False Path(dirpath).is_dir() # True Path(filepath).is_file() # True Path(dirpath).is_file() # False
Здесь мы проверяем, является ли объект Path файлом или каталогом.
Проверьте, пуст ли файл
Пустой файл или файл с нулевым байтом - это любой файл, который не содержит данных или содержимого. Файл может быть любого типа. Некоторые файлы (например, музыкальные файлы) могут не иметь данных, но все же содержать метаданные (например, автор). Такие файлы не могут рассматриваться как пустой файл.
В Linux и MacOS можно быстро создать пустой файл:
touch emptyfile
type nul > emptyfile
Давайте теперь определим переменные emptyfile и nonemptyfile указывая на пустой файл, имеющий нулевые байты, и непустой файл, имеющий размер одного байта:
emptyfile = '/mnt/f/code.books/articles/python/emptyfile' nonemptyfile = '/mnt/f/code.books/articles/python/onebytefile'
Давайте посмотрим на тип и размер этих файлов:
$ ls -l -rwxrwxrwx 1 root root 0 Sep 10 18:06 emptyfile -rwxrwxrwx 1 root root 1 Sep 10 18:08 onebytefile $ file emptyfile emptyfile: empty $ file onebytefile onebytefile: very short file (no magic)
Использование os.stat
В качестве альтернативы мы можем использовать Python модуль os для проверки этой информации. Функция os.stat() возвращает объект stat_result . Этот объект в основном представляет собой структуру данных, которая представляет собой набор свойств файла:
import os emptyfile = '/mnt/f/code.books/articles/python/emptyfile' nonemptyfile = '/mnt/f/code.books/articles/python/onebytefile' result = os.stat(nonemptyfile) result.st_size # 1 result = os.stat(emptyfile) result.st_size # 0
Использование os.path
Python модуль os.path позволяет очень легко работать с путями к файлам. Помимо проверки существования пути или определения их типа, мы также можем получить размер файла, указанного в виде строки.
os.path.getsize() возвращает размер файла, указанного как объект, подобный path-like, и его намного проще использовать, чем os.stat() :
import os emptyfile = '/mnt/f/code.books/articles/python/emptyfile' nonemptyfile = '/mnt/f/code.books/articles/python/onebytefile' os.path.getsize(emptyfile) # 0 os.path.getsize(nonemptyfile) # 1
Использование pathlib
Если мы работаем c Python 3.4 или выше, мы можем использовать модуль pathlib для получения размера файла. Он в основном заменяет модуль os . Path.stat() возвращает свойство stat_result объекта Path , эквивалентное возвращаемому значению os.stat() :
from pathlib import Path emptyfile = '/mnt/f/code.books/articles/python/emptyfile' nonemptyfile = '/mnt/f/code.books/articles/python/onebytefile' print('File stats: ' + Path(emptyfile).stat()) print('File size: ' + Path(emptyfile).stat().st_size + ' byte(s)') print('File stats: ' + Path(nonemptyfile).stat()) print('File size: ' + Path(nonemptyfile).stat().st_size + ' byte(s)')
File stats: os.stat_result(st_mode=33279, st_ino=14355223812249048, st_dev=17, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1600087010, st_mtime=1600087010, st_ctime=1600087010) File size: 0 byte(s) File stats: os.stat_result(st_mode=33279, st_ino=5629499534218713, st_dev=17, st_nlink=1, st_uid=0, st_gid=0, st_size=1, st_atime=1600088120, st_mtime=1600088072, st_ctime=1600088072) File size: 1 byte(s)
Проверьте, пуст ли каталог
Каталог, в котором нет других файлов или подкаталогов, является пустым каталогом. Однако каждый каталог (даже пустой) содержит следующие 2 записи:
- . ссылается на текущий каталог и полезен в таких операциях, как поиск чего-либо внутри текущего каталога
- .. ссылается на родительский каталог текущего каталога, требуется для возврата из текущего каталога
Давайте определим две переменные - emptydirectory и nonemptydirectory укажем на пустой и непустой каталог:
emptydirectory = '/mnt/f/code.books/articles/python/markdown' nonemptydirectory = '/mnt/f/code.books/articles/python/code'
В пустом каталоге нет никаких элементов:
$ pwd /mnt/f/code.books/articles/python/markdown $ ls -la total 0 drwxrwxrwx 1 root root 512 Sep 11 11:52 . drwxrwxrwx 1 root root 512 Sep 10 20:22 ..
Непустой каталог содержит единственный файл:
$ pwd /mnt/f/code.books/articles/python/code $ ls -la total 0 drwxrwxrwx 1 root root 512 Sep 14 11:02 . drwxrwxrwx 1 root root 512 Sep 14 18:22 .. -rwxrwxrwx 1 root root 425 Sep 14 12:27 file_dir.py
Использование os.listdir()
В os.listdir() возвращает последовательность, которая содержит имена всех элементов , найденных в пути каталога, переданного в качестве аргумента. Она не включает в себя . и .. записи:
import os os.listdir(emptydirectory) # [] os.listdir(nonemptydirectory) # ['file_dir.py']
Расчет длины возвращенного списка легко определяет, пуст каталог или нет. Пустой каталог всегда имеет нулевую длину:
import os print(len(os.listdir(nonemptydirectory))) # 1 print(len(os.listdir(emptydirectory))) # 0
Использование os.scandir()
Функция os.listdir() полезна, когда вам нужна целая куча названия записей в виде списка для дальнейшей обработки. Однако, чтобы проверить, есть ли хотя бы одна запись, нам не нужен список всех файлов внутри.
Если каталог огромен, выполнение функции os.listdir() займет много времени, в то время как, если записей больше 0 , на наш вопрос будет дан ответ.
На помощь приходит функция os.scandir() , возвращающая ленивую итерацию или генератор.
Генераторы возвращают итераторы, которые можно перебирать, как обычные итерации, такие как список. Но в отличие от списка, набора или словаря, они не хранят в памяти целую кучу значений, а вместо этого возвращают новое значение по запросу.
Этот подход примерно в ~ 200 раз быстрее для каталогов из ~ 1000 файлов.
Поэтому вместо того, чтобы перебирать всю структуру каталогов, мы можем использовать os.scandir() , чтобы проверить, есть ли хотя бы одна запись в пути к каталогу:
import os emptydirectory = '/mnt/f/code.books/articles/python/markdown' nonemptydirectory = '/mnt/f/code.books/articles/python/code' print(next(os.scandir(emptydirectory), None)) print(next(os.scandir(nonemptydirectory), None)) #
Мы используем встроенную функцию next() для получения следующего доступного элемента из ленивого итератора, возвращаемого функцией os.scandir() . Поскольку в emptydirectory нет доступных элементов - он возвращается None , тогда как для nonemptydirectory возвращается объект os.DirEntry .
Вывод
В этом руководстве мы рассмотрели, как различать файлы и каталоги, после чего проверили их пустоту.
Это можно сделать с помощью модулей os или pathlib и их удобных функций и классов.
Список list в Python
Списки представляют собой изменяемые последовательности, обычно используемые для хранения коллекций однородных элементов, где степень сходства зависит от приложения.
Списки поддерживают следующие операции:
- общие операции с последовательностями;
- операции с изменяемыми последовательностями.
В Python списки представлены встроенным классом list() , его можно использовать для преобразования итерируемых объектов в тип list .
Списки могут быть созданы несколькими способами:
- Используя пару квадратных скобок для обозначения пустого списка: [] .
- Используя квадратные скобки, разделяя элементы запятыми: [a, b, c] .
- Используя генератор списка: [x for x in iterable] .
- Используя конструктор типа list :
- list() - создаст пустой список,
- list(iterable) - преобразует в список объект, который поддерживает итерацию.
Конструктор класса list(iterable) создает список, элементы которого совпадают и находятся в том же порядке, что и элементы итератора iterable . Аргумент iterable может быть либо последовательностью, контейнером поддерживающим итерацию, либо объектом итератора. Если аргумент не задан, конструктор создает новый пустой список [] .
- Если код программы многократно использует операцию вхождения в список list , то для этой цели лучше использовать множество set . Множества set / frozenset специально заточены для этой цели.
- Когда код программы часто добавляет элементы списка с одной стороны и удаляет с другой стороны (методы с изменяемыми последовательностями это делать позволяют). В этом случае следует использовать класс deque который представляет собой двустороннюю очередь, которая предназначена для быстрого добавления и удаления элементов с обоих концов последовательности.
Список list способен хранить в себе разные типы данных.
Примеры использования создания списка и преобразования объектов к типу list :
>>> list() # Создание списка # [] >>> [] # [] >>> [1, 'a', 10, 'b', '105'] # [1, 'a', 10, 'b', '105'] # Преобразование строки str в список тип list >>> list('abc') # ['a',' b',' c'] # Преобразование кортежа tuple в список тип list >>> list((1, 2, 3)) # [1, 2, 3] # Преобразование множества set в список тип list >>> list(1, 2, 3>) # [1, 2, 3] # Преобразование генератора в список тип list >>> list(range(5)) # [0, 1, 2, 3, 4] # Преобразуем список строк в список чисел x = ['55', '11', '25', '15', '9'] int_list = [int(i) for i in x] print(int_list) # [11, 15, 25, 55, 9]
Если объект iterable уже является списком, создается и возвращается копия, аналогичная iterable[:] . Многие другие операции также создают списки, в том числе встроенная функция sorted() .
Списки имеют дополнительный метод:
list.sort(*, key=None, reverse=False) :
Метод list.sort() принимает два аргумента, которые могут передаваться только по ключевому слову:
- key определяет функцию с одним аргументом, которая используется для извлечения ключа сравнения из каждого элемента списка, например, key=str.lower . Ключ, соответствующий каждому элементу в списке, вычисляется один раз и затем используется для всего процесса сортировки. Значение по умолчанию None означает, что элементы списка сортируются напрямую без вычисления отдельного значения ключа.
- reverse это логическое значение. Если установлено значение True , то элементы списка сортируются так, как если бы каждое сравнение было обратным.
Метод изменяет последовательность на месте для экономии памяти при сортировке большой последовательности. Чтобы напомнить пользователям, что он работает с таким эффектом, он не возвращает отсортированную последовательность. Для того, что бы получить копию отсортированного списка используйте встроенную функцию сортировки sorted() .
Метод list.sort() гарантированно будет стабильным. Сортировка является стабильной, если она гарантирует отсутствие изменения относительного порядка элементов, которые будут равными в сортируемом списке. Это полезно для сортировки за несколько проходов, например сортировка по отделу, а затем по уровню зарплаты.
Примеры использования сортировки списка методом sort() :
>>> x = [5, 2, 3, 1, 4] >>> x.sort() >>> x # [1, 2, 3, 4, 5] # Обратная сортировка - reverse=True >>> x = [5, 2, 3, 1, 4] >>> x.sort(reverse=True) >>> x # [5, 4, 3, 2, 1]
Сортировка по длине строки, в качестве функции сортировки выступает встроенная len() :
>>> x = ['a', 'dddd', 'сс', 'bbb'] >>> x.sort(key=len) >>> x # ['a', 'сс', 'bbb', 'dddd']
В следующем примере, в списке x представлена последовательность чисел в качестве строк. При простой сортировке будет использоваться лексикографическое сравнение.
>>> x = ['55', '11', '25', '15', '9'] >>> x.sort() >>> x # ['11', '15', '25', '55', '9']
Применим в качестве ключевой функции для сравнения класс int() , для преобразования строк в целые числа, что бы упорядочить последовательность строк как будто это список чисел.
>>> x = ['55', '11', '25', '15', '9'] >>> x.sort(key=int) >>> x # ['9', '11', '15', '25', '55']
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Утиная типизация 'Duck Typing'
- Что такое вызываемый объект callable?
- Как проверить тип переменной/объекта
- Логический тип данных bool
- Целые числа int
- Ограничение длины преобразования целочисленной строки
- Вещественные числа float
- Комплексные числа complex
- Типы последовательностей
- Список list
- Кортеж tuple
- Диапазон range
- Текстовые строки str
- Словарь dict
- Множество set и frozenset
- Итератор Iterator, протокол итератора
- Генератор generator и выражение yield
- Контекстный менеджер with
- Байтовые строки bytes
- Байтовый массив bytearray
- Тип memoryview, буфер обмена
- Файловый объект file object
- Универсальный псевдоним GenericAlias
- Объект объединения Union
Как проверить, является ли строка пустой в Python
В работе с переменными типа «строка» в Python часто возникает необходимость проверить, является ли данная строка пустой. Пустой строкой считается строка, которая не содержит никаких символов. В Python пустая строка выглядит как две кавычки без пробелов и символов между ними: "" .
Пример пустой строки:
Однако, иногда возникает желание избежать прямого сравнения со строкой и использовать что-то вроде string.empty для проверки на пустоту, как это реализовано в некоторых других языках программирования.
В Python для проверки пустоты строки можно использовать несколько подходов.
Проверка с помощью оператора ==
Самый простой и очевидный способ – это использование оператора сравнения == .
s = "" if s == "": print("Строка пустая")
Проверка с помощью функции len()
Функция len() возвращает количество символов в строке. Для пустой строки она вернет 0.
s = "" if len(s) == 0: print("Строка пустая")
Проверка с помощью логического контекста
В Python пустые объекты (включая строки) интерпретируются как False в логическом контексте. Поэтому можно просто проверить строку в условии if .
s = "" if not s: print("Строка пустая")
Все три способа верные и выбор зависит от предпочтений и ситуации. Самый элегантный и «pythonic way», однако, считается последний — проверка строки в логическом контексте.