Инструменты пользователя

Инструменты сайта


develop:pyton:lists

Это старая версия документа!


Списки, кортежи, множества, диапазоны, словари

Списки, кортежи, множества, диапазоны

Нумерованные наборы объектов, каждый элемент содержит лишь ссылку на объект, поэтому могут содержать смесь любых типов данных и иметь неограниченную вложенность.
Поддерживают обращение по индексу, срез, конкатенацию, повторение, проверку на вхождение (не вхождение).

Списки

Изменяемый тип данных

Создание списка

  • list(…)
  • [«», .. «»]
  • .append('')

Вложенные списки следует создавать методом 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

zip(), map(), filter(), reduce()

map() - позволяет применить заданную функцию к каждому элементу, возвращает объект итерации
Указать можно несколько списков, передаваться будут соответствующие, при разных размерах списков, предпочтение отдается меньшему

zip() - передается несколько списков, возвращает кортеж с соответствующими элементами из каждой последовательности

filter - позволяет выполнить проверку каждого элемента последовательности, возвращает элементы прошедшие проверку
Передается функция для проверки, либо выражение, если указать None то будет проверка каждого элемента на True, несоответствующие элементы отбрасываются из результата

reduce() - применяет указанную функцию к элементам и накапливает результат. В функцию передается два значения, текущий элемент и сумма вычислений

print(list(map(myfunc, arr)))
print(list(zip([1,4,7], [2,5,8], [3,6,9])))

Добавление/удаление элементов

 
 

Поиск в списке

 
 

Переворачивание/перемешивание

 
 

Выбор случайных элементов

 
 

Сортировка

 
 

Заполнение числами

 
 

Преобразование в строку

 
 

Кортежи

Не изменяемый тип данных

 
 

Множества

Набор уникальных значений. Может быть как изменяемым так и не изменяемым

 
 

Диапазоны

Содержит только последовательные значения, формируется «на лету», занимает минимум ресурсов

 
 

Модуль itertools

 
 

Генерирование значений

 
 

Генерирование комбинаций

 
 

Фильтрация последовательности

 
 

Прочие функции

 
 

Словари

 
 

Создание словаря

 
 

Операции над словарями

 
 

Перебор элементов словаря

 
 

Методы

 
 

Генераторы словарей

 
 
 
 
 
develop/pyton/lists.1645034554.txt.gz · Последнее изменение: 2022/02/16 18:02 — admin