English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Python

Управление потоком Python

Функции Python

Типы данных Python

Файловые операции Python

Объекты и классы Python

Даты и время Python

Продвинутые знания Python

Руководство Python

Списки (List) в Python

В этой статье мы рассмотрим все о Python списке; как их создавать, как разрезать списки, добавлять или удалять элементы и т.д.

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

Как создать список (List)?

В программировании на Python список создается, помещая все элементы (элементы) в квадратные скобки [] и разделяя их запятыми.

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

# Пустой list
my_list = []
# Список с целыми числами
my_list = [1, 2, 3]
# Список с混енными типами данных
my_list = [1, "Hello", 3.4]

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

# Вложенный list
my_list = ["mouse", [8, 4, 6], ['a']]

Как получить доступ к элементам списка?

Мы можем получить доступ к элементам списка несколькими способами.

Индекс списка

Мы можем использовать оператор индексации [] для доступа к элементам списка. Индекс начинается с 0. Таким образом, список с 5 элементами имеет индексы от 0 до 4.

Попытка доступа к другим элементам вызовет IndexError. Индекс должен быть целым числом. Мы не можем использовать float или другой тип, это вызовет TypeError.

Доступ к вложенным спискам через индексирование.

my_list = ['p','r','o','b','e']
# Вывод: p
print(my_list[0])
# Вывод: o
print(my_list[2])
# Вывод: e
print(my_list[4])
# Ошибка! Только целые числа могут использоваться для индексации
# my_list[4.0]
# Вложенный список
n_list = ["Happy", [2,0,1,5]]
# Вложенные индексы
# Вывод: a
print(n_list[0][1])    
# Вывод: 5
print(n_list[1][3])

Отрицательные индексы

Python позволяет использовать отрицательные индексы для его последовательностей. Индекс -1 означает последний элемент, -2 означает предпоследний элемент и так далее.

my_list = ['p','r','o','b','e']
# Вывод: e
print(my_list[-1])
# Вывод: p
print(my_list[-5])

Как резать список в Python?

Мы можем использовать оператор среза (двоеточие:) для доступа к ряду элементов в списке.

my_list = ['p','r','o','g','r','a','m','i','z']
# От третьего элемента до пятого
print(my_list[2:5])
# От начала до четвертого элемента
print(my_list[:-5])
# Шестой элемент до конца
print(my_list[5:])
# Элементы от начала до конца
print(my_list[:])

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

Как изменить или добавить элементы в список?

Список является изменяемым, что означает, что их элементы могут быть изменены, в отличие отstringилиtuple

Мы можем использовать оператор присваивания (=) для изменения одного элемента или ряда элементов.

# Список значений
odd = [2, 4, 6, 8]
# Изменить первый элемент    
odd[0] = 1            
# Вывод: [1, 4, 6, 8]
print(odd)
# Изменить вторые, третьи и четвертые элементы
odd[1:4] = [3, 5, 7]  
# Вывод: [1, 3, 5, 7]
print(odd)

Мы можем использовать метод append() для добавления одного элемента в список или метод extend() для добавления нескольких элементов в список.

odd = [1, 3, 5]
odd.append(7)
# Вывод: [1, 3, 5, 7]
print(odd)
odd.extend([9, 11, 13])
# Вывод: [1, 3, 5, 7, 9, 11, 13]
print(odd)

Мы можем использовать оператор + для комбинирования двух списков. Это также называется последовательностью.

* оператор повторяет список заданное количество раз.

odd = [1, 3, 5]
# Вывод: [1, 3, 5, 9, 7, 5]
print(odd + [9, 7, 5])
# Вывод: ['re', 're', 're']
print(['re'] * 3)

Кроме того, мы можем использовать метод insert() для вставки элемента в нужное место или вставить несколько элементов, сжав их в пустой срез списка.

odd = [1, 9]
odd.insert(1, 3)
# Вывод: [1, 3, 9] 
print(odd)
odd[2:2] = [5, 7]
# Вывод: [1, 3, 5, 7, 9]
print(odd)

Как удалить элемент или элементы из списка?

Мы можем использовать ключевое слово del для удаления одного или нескольких элементов из списка. Оно даже может полностью удалить список.

my_list = ['p', 'r', 'o', 'b', 'l', 'e', 'm']
# Удалить один элемент
del my_list[2]
# Вывод: ['p', 'r', 'b', 'l', 'e', 'm']     
print(my_list)
# Удалить несколько элементов
del my_list[1:5]  
# Вывод: ['p', 'm']
print(my_list)
# Удалить все элементы списка
del my_list       
# Ошибка: Список не определен
print(my_list)

Мы можем использовать метод remove() для удаления заданного элемента, а также метод pop() для удаления элемента по индексу.

Если индекс не указан, метод pop() удаляет и возвращает последний элемент. Это помогает нам реализовать список как стэк (структуру данных с приоритетом «первым вошедшим, первым вышедшим»).

Мы также можем использовать метод clear() для очистки списка.

my_list = ['p', 'r', 'o', 'b', 'l', 'e', 'm']
my_list.remove('p')
# Вывод: ['r', 'o', 'b', 'l', 'e', 'm']
print(my_list)
# Вывод: 'o'
print(my_list.pop(1))
# Вывод: ['r', 'b', 'l', 'e', 'm']
print(my_list)
# Вывод: 'm'
print(my_list.pop())
# Вывод: ['r', 'b', 'l', 'e']
print(my_list)
my_list.clear()
# Вывод: []
print(my_list)

В конце концов, мы можем удалить элементы из списка, присваивая им пустой список.

>>> my_list = ['p', 'r', 'o', 'b', 'l', 'e', 'm']
>>> my_list[2:3] = []
>>> my_list
['p', 'r', 'b', 'l', 'e', 'm']
>>> my_list[2:5] = []
>>> my_list
['p', 'r', 'm']

Python列表方法

下面列出了Python编程中list对象可用的方法。

它们以list.method()方式访问。上面已经使用了某些方法。

Python列表方法
append() -将元素添加到列表的末尾
extend() -将列表的所有元素添加到另一个列表
insert() -在定义的索引处插入一个项目
remove() -从列表中删除一个项目
pop() -删除并返回给定索引处的元素
clear() -从列表中删除所有项目
index() -返回第一个匹配项的索引
count() -返回作为参数传递的项目数
sort() -以升序对列表中的项目进行排序
reverse() -反转列表中项目的顺序
copy() -返回列表的浅表副本

Python列表方法的一些示例:

my_list = [3, 8, 1, 6, 0, 8, 4]
# 输出: 1
print(my_list.index(8))
# 输出: 2
print(my_list.count(8))
my_list.sort()
# 输出: [0, 1, 3, 4, 6, 8, 8]
print(my_list)
my_list.reverse()
# 输出: [8, 8, 6, 4, 3, 1, 0]
print(my_list)

列表理解:创建新列表的优雅方式

列表理解是从Python现有列表中创建新列表的一种简洁明了的方法。

列表理解包含一个表达式,后跟方括号内的for语句

这是一个列出每项增加2的幂的示例。

pow2 = [2 ** x for x in range(10)]
# 输出: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
print(pow2)

此代码等效于

pow2 = []
for x in range(10):
   pow2.append(2 ** x)

列表推导可以选择包含更多for或if语句.可选if语句可以过滤出新列表的项目。这里有一些示例。

>>> pow2 = [2 ** x for x in range(10) if x > 5]
>>> pow2
[64, 128, 256, 512]
>>> odd = [x for x in range(20) if x % 2 == 1]
>>> odd
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>> [x+y for x in ['Python', 'C'] for y in ['Language', 'Programming']]
['Python Language', 'Python Programming', 'C Language', 'C Programming']

Другие операции со списками в Python

Тест членства списка

Мы можем использовать ключевое слово in для проверки наличия элемента в списке.

my_list = ['p', 'r', 'o', 'b', 'l', 'e', 'm']
# Вывод: True
print('p' in my_list)
# Вывод: False
print('a' in my_list)
# Вывод: True
print('c' not in my_list)

Итерация по списку

Используя цикл for, мы можем итерировать по каждому элементу списка.

for fruit in ['apple', 'banana', 'mango']:
    print("I like", fruit)