Списки Python
Список Python — это набор данных — в контейнере, называемом списком, в других языках это называется массивом. Самый простой способ инициализировать список — создать имя переменной и присвоить его открытой и закрытой квадратной скобке []
. Внутри этой скобки вы можете добавить разные типы данных, разделенные символом ( ,
). Список в python может содержать разные типы данных, включая функцию.
- Вы можете сохранить список связанных данных в списке
- Вы также можете хранить смешанные данные, как в примере 2.
- Вы можете добавить практически любой тип данных в свой список, как в примере 3.
2 — Пример пустого списка
# list example 1 list_name = [] #empty list
2 — Пример списков строк и чисел str
и int
list_of_numbers = [1,2,3,4,5,6,7] # int Lists list_of_names = ['James', 'jane', 'Wills', 'Dave'] # str lists
3 — Пример списка различных типов
# different types def addNums(x,y): return x + y list_of_types = [1, 2,'names', True, False, None, addNums, {'name': 'Doud', 'age': '28'}, (10, 16), [10, 20]]
Манипуляции со списками
Список очень эффективен в Python и многих других языках программирования, потому что вы можете добавлять элементы, удалять элементы, упорядочивать элементы в определенном порядке и многое другое. Давайте посмотрим примеры
Доступ к элементам списка (индексация списка)
- Доступ к элементам списка можно получить, используя их индексы
- Списки имеют нулевой индекс (это означает, что вы должны начать отсчет с
0
) - Первый элемент списка находится в индексе
0
- Последний элемент списка находится в индексе индекс
( length of that list - 1 )
Допустим, у нас есть список имен
# list_index = 0 1 2 3 names = ['James', 'Adam', 'Wills', 'Doud'] print(names[0]) # James print(names[1]) # Adam print(names[2]) # Wills
Получение длины списка
Вы можете получить длину списка, используя встроенную функцию len()
в python. Функция len([1,2,3,4])
принимает список в качестве аргумента и возвращает его длину.
# Getting the length of a List nums = [1, 2, 3, 4, 5, 6, 'end'] print(len(numbers)) # 7 # getting the last index by subtracting the 1 from the length print(nums[len(numbers) - 1]) # end
Отрицательное индексирование
Вы можете добавить отрицательное значение в квадратные скобки при получении или индексации элементов списка, чтобы начать с последнего.
- Последний элемент в списке будет иметь индекс
-1
- Предпоследний будет иметь индекс
-2
и - И список продолжается.
#Let's say we want to get the last item of the nums list print(nums[-1]) # end print(nums[-2]) # 6 print(nums[-3]) # 5
Нарезка списка
Нарезку можно использовать для вырезания некоторой части списка несколькими различными способами, используя квадратную скобку и столбец [<startIndex>:<endIndex>]
.
- Первая часть столбца — это то место, где вы хотите, чтобы нарезка начиналась
<startIndex>
, а последняя часть — то, где вы хотите, чтобы она заканчивалась<endIndex>
- Если вы оставите первую часть пустой и укажете вторую часть вот так
[:3]
, она начнется с индекса0
до индекса3
- Если вы оставите последнюю часть пустой, она будет выглядеть так:
[2:]
начинается с2
до конца списка. - Не указав ничего, вы получите копию массива с 1-го по последний
# Let's say we have a list of numbers numbers = [1,2,3,4,5,6,7,8,9,10] print(numbers[3:7]) # [4, 5, 6, 7] print(numbers[:3]) # [1, 2, 3] print(numbers[:]) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- Допустим, мы хотим получить последний
3
элемент списка чисел.
print(numbers[-3:]) # [8, 9, 10]
Многомерный список
Список может содержать другой список, давайте посмотрим пример этого
- Допустим, у нас есть список, содержащий два списка.
- Первый содержит число, а другой содержит строку
- Получение номера
2
из списка номеров будет происходить так
listings = [[1,2,3], 'num1', 'num2', 'num3'] listings[0][1] # 2
Изменение элементов списка
- Мы можем изменить любой элемент, используя его индекс
names = ['Sam', 'Wills', 'Dan'] names[-1] = 'John' print(names) # ['Sam', 'Wills', 'John']
- Мы также можем изменить пару элементов, используя трюк с нарезкой.
names[:2] = ['Jane', 'Maria'] print(names) # ['Jane', 'Maria', 'John']
- Может быть, я просто хочу удалить элементы из списка
names[:2] = []
Добавление в список
- Допустим, у меня есть список
[1,2,3,4]
и еще один список[5,6,7,8]
.
num1 = [1,2,3,4] num2 = [5,6,7,8] print(num1 + num2) # [1,2,3,4,5,6,7,8]
Список методов
Это функции, которые вы можете использовать в списке. Может быть, чтобы изменить список или манипулировать списком. len()
является примером этого.
Добавление в список с list.append()
- Это можно использовать для добавления элемента в конец списка
- Эквивалентно
a[len(a):] = [x]
.
names = ['Sam', 'Wills', 'Dan'] names.append('Ali') print(names) # ['Sam', 'Wills', 'Dan', 'Ali']
Расширьте список с помощью list.extend()
- Вы можете добавить больше элементов в список с помощью
list.extend()
nums = [1,2,3,4,5] nums.extend([6,7,8,9,0]) print(nums) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
Добавить элемент в определенный индекс с помощью list.insert()
- Вы можете вставить элемент в заданную позицию с помощью
list.insert()
- Метод вставки подтолкнет остальные элементы к следующим индексам.
insert()
принимает два параметра: первый — это индекс, а второй — что вставлять.
sports = ['Foot Ball', 'Soccer', 'Tennis'] sports.insert(0, 'Basket Ball') print(sports) # ['Basket Ball', 'Foot Ball', 'Soccer', 'Tennis']
Удалить элемент из списка с помощью list.remove()
- Вы можете удалить элемент, передав его функции удаления
- если элемент не существует, он вернет ValueError.
sports = ['Foot Ball', 'Soccer', 'Tennis'] sports.remove('Soccer') print(sports) # ['Foot Ball', 'Tennis']
Удаление элемента с использованием индекса с list.pop(i)
- Метод
pop
принимает индекс и удаляет элемент по этому конкретному индексу - Если индекс не передан, он удалит последний элемент в списке.
sports = ['Foot Ball', 'Soccer', 'Tennis'] sports.pop(0) print(sports) # ['Soccer', 'Tennis']
Очистка всех элементов списка с помощью list.clear()
- Это очищает все элементы в списке
- Эквивалентно
del a[:]
- Также эквивалентно
a[:] = []
numbers = [1,2,3,4,5,6,7] print(numbers.clear()) # []
Получение индекса элемента с помощью list.index()
- метод index принимает 3 аргумента
- Первый аргумент - это элемент, который нужно искать
- Во-вторых, с чего начать поиск
- третье, где перестать искать
- если передан только один аргумент, он вернет первый индекс элемента
numbers = [1,'a',3,4,'a',6,7, 'a', 8, 9] numbers.index('a') # 1 numbers.index('a', 2, 6) # 4 numbers.index('a', 6) # 7
Подсчитайте, сколько раз элемент появляется в списке с list.count()
numbers = [1,'a',3,4,'a',6,7, 'a', 8, 9] print(numbers.count('a')) # 3
Обращение элементов списка с помощью list.reverse()
- При реверсе элементы слева перемещаются вправо и наоборот
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] nums.reverse() print(nums) # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
Сортировка списка по алфавиту с помощью list.sort()
- Этот метод принимает два необязательных параметра:
key='...'
иreverse='...'
reverse=
указывает направление сортировки по возрастанию или убыванию, принимает значениеTrue
илиFalse
#Sorting random numbers nums = [8, 7, 2, 4, 5, 10, 3, 1, 9, 6] nums.sort() print(nums) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # with reverse=True random = [8, 7, 2, 4, 5, 10, 3, 1, 9, 6] random.sort(reverse=True) print(random) # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
- Параметр
key='...'
особенно полезен, когда вы имеете дело со списком типов данных, таких как строки,dictionary
,set
илиtuple
. - Давайте посмотрим на пример этого.
# sorting by length of a string nums = ['james', 'jim', 'sam', 'jimmy'] nums.sort(key=len) print(nums) # ['jim', 'sam', 'james', 'jimmy'] # Sorting tuples list but only the second item in the tuple # step i define a func coordinates = [(2, 4), (3, 2), (4, 1), (9, 0)] def secondItem(val): return secondItem[1] coordinates.sort(key=secondItem) print(coordinates) # [(9, 0), (4, 1), (3, 2), (2, 4)]