List: примеры (PYTHON)
list(iterable): listОсновные характеристики функции list
Функция list() в Python представляет собой конструктор встроенного типа list, предназначенный для создания списков из итерируемых объектов или для формирования пустых списков. Эта функция часто применяется для преобразования различных последовательностей и коллекций в изменяемый список.
Сигнатура функции содержит один необязательный параметр: list([iterable]). Аргумент iterable может быть любым объектом, поддерживающим итерацию - строкой, кортежем, множеством, словарем, диапазоном или генератором. При отсутствии аргумента возвращается пустой список.
Возвращаемое значение - новый объект типа list, содержащий элементы исходного итерируемого объекта в том же порядке. Для словарей функция возвращает список ключей. Созданный список является изменяемым, поддерживает индексацию и различные методы модификации.
Примеры использования функции
Преобразование строки в список символов:
list('Python')
['P', 'y', 't', 'h', 'o', 'n']
Создание списка из кортежа:
list((1, 2, 3))
[1, 2, 3]
Работа со словарем:
list({'a': 1, 'b': 2})
['a', 'b']
Использование с диапазоном:
list(range(3))
[0, 1, 2]
Создание пустого списка:
list()
[]
Похожие функции в Python
tuple() создает неизменяемый кортеж из итерируемого объекта. Кортежи занимают меньше памяти и могут использоваться в качестве ключей словаря.
set() формирует множество, удаляя дубликаты элементов и не сохраняя порядок.
[ ] - литерал списка позволяет создавать списки напрямую без вызова функции, что удобнее для небольших фиксированных списков.
list comprehension предоставляет более выразительный способ создания списков с преобразованием элементов и фильтрацией.
Аналоги функции в других языках
JavaScript: Array.from() или оператор расширения [...iterable].
Array.from('hello');
// ['h', 'e', 'l', 'l', 'o']PHP: iterator_to_array() или (array) приведение типа.
iterator_to_array(new ArrayIterator([1, 2]));
// [1, 2]Java: создание ArrayList через конструктор с коллекцией.
new ArrayList<>(Arrays.asList(1, 2, 3));C#: метод ToList() из пространства имен System.Linq.
new List {1, 2, 3};
Golang: необходимо явное преобразование с циклом, так как строгая типизация.
var s = []int{1, 2, 3}
Типичные ошибки при использовании
Передача неитерируемого объекта вызывает TypeError:
list(123)
TypeError: 'int' object is not iterable
Попытка преобразования многомерных структур требует дополнительной обработки:
matrix = [[1,2], [3,4]]
list(matrix) # Создает список из двух списков
[[1, 2], [3, 4]]
Потеря данных при преобразовании множеств из-за неупорядоченности:
list({3, 1, 2})
[1, 2, 3] # Порядок может отличаться
Изменения в последних версиях Python
В Python 3.9 добавлена поддержка аннотаций типов для конструктора list. Начиная с Python 3.10, улучшены сообщения об ошибках при передаче неитерируемых объектов. Специфических изменений в поведении функции list в последних версиях не зафиксировано, что демонстрирует стабильность этого базового компонента языка.
Расширенные примеры использования
Преобразование генератора в список с сохранением вычисленных значений:
gen = (x**2 for x in range(5))
list(gen)
[0, 1, 4, 9, 16]
Создание списка из enumerate объекта с индексами:
list(enumerate(['a', 'b', 'c']))
[(0, 'a'), (1, 'b'), (2, 'c')]
Использование с zip для транспонирования матрицы:
rows = [[1, 2], [3, 4]]
list(zip(*rows))
[(1, 3), (2, 4)]
Преобразование map объекта после применения функции:
list(map(str.upper, ['a', 'b']))
['A', 'B']
Работа с файлом: преобразование строк файла в список:
with open('data.txt') as f:
lines = list(f)
['строка1\n', 'строка2\n']
Создание списка из объекта memoryview:
data = bytearray(b'hello')
list(memoryview(data))
[104, 101, 108, 108, 111]