Пустой список в Python
Эм, а можно пример такой ошибки? Если lst действительно список и действительно пуст, то данный код обязан работать, а вы наверно что-то делаете не так с самой переменной.
16 мая 2016 в 10:09
@andreymal может топикастер переживает, что кто-то напишет def len(a): return 1 ?
16 мая 2016 в 10:24
@VladimirGamalian в таком случае есть куча более серьёзных поводов для беспокойства 😀
16 мая 2016 в 10:34
@andreymal это да ). Для junior кстати не такая уж и гипотетическая ситуация. Например использование built-in имен типа file для своих переменных встречается довольно часто.
16 мая 2016 в 10:40
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
В отличие от некоторых языков программирования, в Python объект считается false, только если он пуст. Это значит, что не нужно проверять длину строки, кортежа или словаря — достаточно проверить его как логическое выражение.
Взято отсюда, может чего еще полезного найдете.
Поэтому предложенный в комментарии вариант @Vladimir Gamalian думаю подходит:
if not lst:
Отслеживать
ответ дан 17 мая 2016 в 6:31
6,151 3 3 золотых знака 19 19 серебряных знаков 38 38 бронзовых знаков
- python
- python-3.x
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.30.4069
Списки (list). Функции и методы списков

Сегодня я расскажу о таком типе данных, как списки, операциях над ними и методах, о генераторах списков и о применении списков.
Что такое списки?
Списки в Python — упорядоченные изменяемые коллекции объектов произвольных типов (почти как массив, но типы могут отличаться).
Чтобы использовать списки, их нужно создать. Создать список можно несколькими способами. Например, можно обработать любой итерируемый объект (например, строку) встроенной функцией list:
Список можно создать и при помощи литерала:
Как видно из примера, список может содержать любое количество любых объектов (в том числе и вложенные списки), или не содержать ничего.
И еще один способ создать список — это генераторы списков. Генератор списков — способ построить новый список, применяя выражение к каждому элементу последовательности. Генераторы списков очень похожи на цикл for.
Возможна и более сложная конструкция генератора списков:
Но в сложных случаях лучше пользоваться обычным циклом for для генерации списков.
Функции и методы списков
Создать создали, теперь нужно со списком что-то делать. Для списков доступны основные встроенные функции, а также методы списков.
Таблица «методы списков»
| Метод | Что делает |
|---|---|
| list.append(x) | Добавляет элемент в конец списка |
| list.extend(L) | Расширяет список list, добавляя в конец все элементы списка L |
| list.insert(i, x) | Вставляет на i-ый элемент значение x |
| list.remove(x) | Удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует |
| list.pop([i]) | Удаляет i-ый элемент и возвращает его. Если индекс не указан, удаляется последний элемент |
| list.index(x, [start [, end]]) | Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end) |
| list.count(x) | Возвращает количество элементов со значением x |
| list.sort([key=функция]) | Сортирует список на основе функции |
| list.reverse() | Разворачивает список |
| list.copy() | Поверхностная копия списка |
| list.clear() | Очищает список |
Нужно отметить, что методы списков, в отличие от строковых методов, изменяют сам список, а потому результат выполнения не нужно записывать в эту переменную.
И, напоследок, примеры работы со списками:
Изредка, для увеличения производительности, списки заменяют гораздо менее гибкими массивами (хотя в таких случаях обычно используют сторонние библиотеки, например NumPy).
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Списки в Python
Здесь мы сохранили 2 переменные, в которых лежат названия фруктов. Но фруктов очень много. Что, если нам нужно работать с сотней таких записей? Например, если у вас интернет-магазин фруктов, придётся хранить очень много фруктов. Не создавать же сотню переменных…
Для таких задач есть списки:
fruits = ["Яблоко", "Банан", "Персик"]
Список — это как бы способ сохранить много штук (строк, чисел и т.д.) в одной переменной. В этом случае в переменной fruits лежит сразу 3 строки: "Яблоко" , "Банан" и "Персик" .
Теперь, чтобы получить одну из строк в списке — нужно обратиться к ней по индексу. Нумерация в программировании идёт с нуля:
0: “Яблоко”
1: “Банан”
2: “Персик”
Чтобы получить нулевой элемент, мы пишем fruits[0] . Такой код выведет Яблоко :
apple = fruits[0] print(apple)
Как добавить элемент в список
Бывает такое, что мы хотим добавить в список что-нибудь. Например, в магазине расширился ассортимент и теперь он торгует апельсинами. Добавляет строки в список метод .append() :
new_fruit = "Апельсин" fruits.append(new_fruit) print(fruits)
Список выведется с новым фруктом: ['Яблоко', 'Банан', 'Персик', 'Апельсин'] .
Как удалить элемент из списка
Допустим, вы решили перестать торговать бананами. Нужно убрать их из списка. Поможет метод .remove() :
banana = "Банан" fruits.remove(banana) print(fruits)
Список выведется без банана: ['Яблоко', 'Персик', 'Апельсин'] .
Из списка можно удалять элементы по их индексу. Код удалит нулевой элемент списка:
del fruits[0] print(fruits)
Список выведется без яблока: ['Персик', 'Апельсин'] .
Как создать пустой список
Есть такая штука, как пустой список. Это когда в списке ничего не лежит. Создаётся он так:
empty_list = []
Так же, как и список с элементами, только без них. Вот так вот просто. В будущем этот список можно наполнить методом .append() .
Что дальше
Если статья не смогла объяснить что же такое списки или вы хотите почитать о них ещё, подойдут эти статьи:
- Списки на metanit
- Списки на pythontutor
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
Список 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