Это старая версия документа!
Нумерованные наборы объектов, каждый элемент содержит лишь ссылку на объект, поэтому могут содержать смесь любых типов данных и иметь неограниченную вложенность.
Поддерживают обращение по индексу, срез, конкатенацию, повторение, проверку на вхождение (не вхождение).
Изменяемый тип данных
Вложенные списки следует создавать методом append()
т.к. хранятся ссылки, можно легко ошибиться групповым присваиванием, для создания копии можно использовать срез, либо метод copy(), лучше deepcopy()
Можно удалить часть списка присвоив срезу пустое значение
Элементы в обратном порядке: arr[::-1], последний элемент: arr[-1:]
Обращение за пределы индекса- исключение
Элементы могут быть любого типа, в т.ч. и целыми списками
arr= [ [1, 2, 3, 'a'] [3, 2, 1, 'b'] [4, 5, 6, [1, 2]] ]
При переборе в цикле for, итератор можно изменять, но если тип данных не изменяемый, то изменения не сохранятся
Для генерации индексов можно использовать диапазон: range(len(arr))
Так же, есть функция enumerate(), возвращает кортеж из индекса и значения, текущего элемента списка
for i, elem in enumerate(arr): arr[i] *= 2
Генерирует последовательность для списка, возвращает новый, работает быстрее цикла for
arr= [1, 2, 3, 4] arr= [i * 2 for i in arr] # Может иметь сложную, вложенную структуру arr= [i * 10 for i in arr if i % 2== 0] # Или arr= [[1,2], [3,4], [5,6]] arr= [i * 10 for i in arr for j in i if j % 2== 0] >> [20,40,60]
Если выражение разместить в круглых скобах, тогда будет возвращаться не список а итератор
arr= [1, 4, 12, 45, 10] sum((i for i in arr if i % 2 == 0)) >> 26
map() - позволяет применить заданную функцию к каждому элементу, возвращает объект итерации
Указать можно несколько списков, передаваться будут соответствующие, при разных размерах списков, предпочтение отдается меньшему
zip() - передается несколько списков, возвращает кортеж с соответствующими элементами из каждой последовательности
filter - позволяет выполнить проверку каждого элемента последовательности, возвращает элементы прошедшие проверку
Передается функция для проверки, либо выражение, если указать None то будет проверка каждого элемента на True, несоответствующие элементы отбрасываются из результата
reduce() - применяет указанную функцию к элементам и накапливает результат. В функцию передается два значения, текущий элемент и сумма вычислений
print(list(map(myfunc, arr))) print(list(zip([1,4,7], [2,5,8], [3,6,9])))
Не изменяемый тип данных
Набор уникальных значений. Может быть как изменяемым так и не изменяемым
Содержит только последовательные значения, формируется «на лету», занимает минимум ресурсов