Списки в Python

Содержание материала

В python есть мощная и удобная встроенная структура данных, которая позволяет группировать данные разных типов в упорядоченные коллекции и имеет большой набор операций. Это списки. Они широко используются для решения практически любых задач. Именно это меня и сподвигло сделать расширенный конспект по всем самым востребованным операциям.

Итак, немногим ранее я уже размещал Конспект по типам данных в Python, однако информации в нем для меня стало недостаточно, я регулярно рою интернете справки по операциям со списками. Ну значит настало время исправить ситуацию, закрепить знания и сконцентрировать их в одном месте.

Что такое списки в Python

Список в Python – это упорядоченная последовательность элементов (items), которые могут иметь разные типы данных. Списки записываются в квадратных скобках и разделяются запятыми. Например:

colors = ["red", "green", "blue"]
numbers = [1, 5, 2, 8, 4]

В списках мы можем хранить элементы любых типов данных – строки, числа, объекты и даже другие списки. Это отличает их от многих других структур данных, которые зачастую бывают типизированы.

Каждый элемент в списке имеет соответствующий индекс, начиная с 0 для первого элемента. Таким образом, мы можем обращаться к отдельным элементам по их индексам:

first_color = colors[0] # "red"

Списки в Python предоставляют богатый набор операций для создания и манипулирования данными:

  • Добавление элементов (append, insert, extend)
  • Удаление элементов (pop, remove, clear)
  • Срез списка (slice)
  • Итерация по списку (for)
  • Поиск элементов (in)
  • Сортировка списка (sort)

Самые востребованные методы списков

append() -  Добавляет элемент в конец списка.

my_list = [1, 2, 3]
my_list.append(4) # теперь my_list содержит [1, 2, 3, 4]

insert(): Вставляет элемент на указанную позицию в списке.

my_list = [1, 2, 3]
my_list.insert(1, 5) # теперь my_list содержит [1, 5, 2, 3]

remove(): Удаляет первое вхождение указанного элемента из списка.

my_list = [1, 2, 3, 2]
my_list.remove(2) # теперь my_list содержит [1, 3, 2]

pop(): Удаляет и возвращает элемент по указанному индексу (по умолчанию – последний элемент).

my_list = [1, 2, 3]
last_element = my_list.pop() # last_element содержит 3, а my_list теперь [1, 2]

sort(): Сортирует элементы списка по возрастанию (по умолчанию) или по указанному ключу.

my_list = [3, 1, 2]
my_list.sort() # теперь my_list содержит [1, 2, 3]

reverse(): Изменяет порядок элементов списка на обратный.

my_list = [1, 2, 3]
my_list.reverse() # теперь my_list содержит [3, 2, 1]

reversed() –  возвращает обратный итератор для любой последовательности

my_list = [1, 2, 3]
reversed_list = list(reversed(my_list)) # reversed_list содержит [3, 2, 1]

Метод reverse() и функция reversed() в Python оба позволяют изменять порядок элементов в последовательностях, но они имеют разные особенности и применения. Вот основные отличия между ними:

– Тип последовательности: reverse() является методом списка и применяется только к изменяемым последовательностям, таким как списки. reversed() является универсальной функцией и может быть применена к любому типу последовательности, включая строки, списки, кортежи и диапазоны (ranges).

– Изменение последовательности: reverse() изменяет существующий список «на месте», то есть порядок элементов в исходном списке меняется. В то время как reversed() создает новый обратный итератор, не изменяя исходную последовательность.

– Возвращаемое значение: reverse() не возвращает значение, так как изменяет исходный список. reversed() возвращает обратный итератор, который можно сконвертировать в другие типы последовательностей, например, в список, кортеж или строку.

index(): Возвращает индекс первого вхождения указанного элемента в списке.

my_list = [10, 20, 30, 20]
index = my_list.index(20) # index содержит 1

count(): Возвращает количество вхождений указанного элемента в списке.

my_list = [1, 2, 2, 3, 2]
count = my_list.count(2) # count содержит 3

extend(): Расширяет список, добавляя в него элементы другого списка.

list1 = [1, 2]
list2 = [3, 4]
list1.extend(list2) # list1 теперь содержит [1, 2, 3, 4]

copy(): Создает копию списка.

original_list = [1, 2, 3]
copied_list = original_list.copy() # copied_list содержит [1, 2, 3]

clear(): Удаляет все элементы из списка.

my_list = [1, 2, 3]
my_list.clear() # my_list теперь пустой []

len(): Возвращает длину (количество элементов) списка.

my_list = [1, 2, 3, 4, 5]
length = len(my_list) # length содержит 5

max(): Возвращает максимальный элемент в списке.

my_list = [10, 30, 20]
max_element = max(my_list) # max_element содержит 30

min(): Возвращает минимальный элемент в списке.

my_list = [10, 30, 20]
min_element = min(my_list) # min_element содержит 10

any(): Возвращает True, если хотя бы один элемент списка истинен (не равен нулю, None, False или пустому контейнеру).

my_list = [0, 1, 2]
result = any(my_list) # result содержит True

all(): Возвращает True, если все элементы списка истинны (не равны нулю, None, False или пустому контейнеру).

my_list = [1, 2, 3]
result = all(my_list) # result содержит True

sorted(): Возвращает новый список, содержащий отсортированные элементы исходного списка.

my_list = [3, 1, 2]
sorted_list = sorted(my_list) # sorted_list содержит [1, 2, 3], my_list остается без изменений

slice(): Возвращает срез списка, начиная с указанного начального индекса и заканчивая указанным конечным индексом.

slice(start, stop, step) start - необязательный параметр, целое число, указывающее, с какой позиции начать срезание. По умолчанию равен 0. stop - обязательный параметр, целое число, указывающее, на какой позиции закончить срезание. Не включается в срез. step - необязательный параметр, целое число, указывающее, какой шаг использовать для срезания. По умолчанию равен 1.
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = slice(0, 10, 3)  # создаем срез с параметрами start=0, stop=10, step=3
print(b[y])  # применяем срез к списку
[1, 4, 7, 10]

count(): Возвращает количество вхождений указанного элемента в списке.

my_list = [1, 2, 2, 3, 2]
count = my_list.count(2) # count содержит 3

join(): Собирает элементы списка в строку, разделенную указанным разделителем.

my_list = ['Hello', 'world', '!']
joined_string = ' '.join(my_list) # joined_string содержит 'Hello world !'

map(): Применяет указанную функцию к каждому элементу списка.

my_list = [1, 2, 3]
squared_list = list(map(lambda x: x**2, my_list)) # squared_list содержит [1, 4, 9]

filter(): Возвращает новый список, содержащий только элементы для которых указанная функция возвращает True.

my_list = [1, 2, 3, 4, 5]
filtered_list = list(filter(lambda x: x % 2 == 0, my_list)) # filtered_list содержит [2, 4]

Этот код использует функцию filter() в Python, чтобы отфильтровать список my_list и оставить только четные числа. Функция filter() принимает два аргумента: функцию-условие и итерируемый объект. В этом случае функцией-условием является lambda-функция, которая проверяет, делится ли каждый элемент списка на 2 без остатка. Итерируемым объектом является список my_list. Функция filter() возвращает новый итерируемый объект, содержащий только те элементы, для которых функция-условие возвращает True. Чтобы преобразовать этот итерируемый объект в список, используется функция list(). Таким образом, filtered_list содержит [2, 4], так как это единственные четные числа из my_list.

reduce(): Применяет указанную функцию к элементам списка поочередно, сводя список к одному значению.

from functools import reduce
my_list = [1, 2, 3, 4]
sum = reduce(lambda x, y: x + y, my_list) # sum содержит 10

Этот код использует функцию reduce() из модуля functools в Python, чтобы суммировать все элементы списка my_list. Функция reduce() принимает два аргумента: функцию для двух аргументов и итерируемый объект. В этом случае функцией является lambda-функция, которая складывает два числа. Итерируемым объектом является список my_list. Функция reduce() применяет функцию к первым двум элементам списка, затем к результату и следующему элементу, и так далее, пока не останется одно значение. Это значение возвращается как результат функции reduce(). В данном примере результатом будет 10, так как 1 + 2 + 3 + 4 = 10.

zip(): Создает итератор, который объединяет элементы нескольких списков в кортежи.

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped_list = list(zip(list1, list2)) # zipped_list содержит [(1, 'a'), (2, 'b'), (3, 'c')]

 

 

 

 

 

    Оцените статью
    Репост в TG и VK
    Алготрейдинг шаг за шагом. Создай торгового робота на Python с нуля по нашим урокам. Автоматизируй торговлю на бирже по собственной стратегии.