Списки Python

Содержание
Введение
Обрезать список
.append(): добавить элемент в конец
.extend(): добавить iterable в конец
Копировать список
len(): длина списка
.insert(): добавить в любое место
split() и join()
.pop(): удалить последний элемент
.pop(): удалить любой элемент
del
reverse() и sort()
zip
Похожие статьи

Введение

Из официальной документации

list A built-in Python sequence. Despite its name it is more akin to an array in other languages than to a linked list since access to elements is O(1).

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

Доступ к элементам O(1) означает что скорость, с которой вы запросив элемент по его индексу получите результат, равна одной операции.

Под каждый элемент списка выделен одинаковый размер памяти, например у меня это 8 байт. Когда вы вызываете элемент с индексом i Python знает адрес памяти нулевого элемента списка и просто прибавляет к нему 8 умноженное на i

Список - это изменяемый объект.

Чтобы создать список нужно воспользоваться квадратными скобками []

Другие способы создания списков в Python описаны в этой статье

lst = ['a', 'b', 'c']
print(lst)

['a','b','c']

Получился список из трёх элементов.

У каждого есть два уникальных индекса. Один индекс соответсвует обходу списка слева направо 0, 1, 2. Второй соответствует обходу в обратную сторону -0, -1, -2

Индекс 'a' = 0 либо -0, индекс 'b' = 1 либо -2, индекс 'c' = 2 либо -1.

Можно пользоваться индексом и в обратную сторону. Тогда индекс c = -1, индекс b = -2, индекс a = -3

Элементabc
Индекс012
Индекс --3-2-1

Обрезать список

При использовании слайсов вида

[x:y]

Элементом с индексом x включается а y нет.

Рассмотрим список

l = [100, 200, 300, 400, 500]

print(l[1:3])

[200, 300]

Элемент с индексом 3 это 400 и он не попал в результат.

Можно использовать заведомо несуществующий индекс. Если он справа слайс будет продолжен до последнего элемента. Если он слева то вернётся пустой список. Exception не появится.

print("l[:10]:\n", l[:10]) print("l[10:]:\n", l[10:]) print("l[10:2]:\n", l[10:2])

l[:10]: [100, 200, 300, 400, 500] l[10:] [] l[10:2] []

l = [100, 200, 300, 400, 500] print("l: ", l) print("l[0]:\n", l[0]) print("l[-0]:\n", l[-0]) print("l[1]:\n", l[1]) print("l[-1]:\n", l[-1]) print("l[1:3]:\n", l[1:3]) print("l[1:-1]:\n", l[1:-1]) print("l[2:]:\n", l[2:]) print("l[:2]:\n", l[:2]) print("l[:10]:\n", l[:10]) print("l[10:]:\n", l[10:]) # All list elements print("l[:]:\n", l[:])

l: [100, 200, 300, 400, 500] l[0]: 100 l[-0]: 100 l[1]: 200 l[-1]: 500 l[1:3]: [200, 300] l[1:-1]: [200, 300, 400] l[2:]: [300, 400, 500] l[:2]: [100, 200] l[:]: [100, 200, 300, 400, 500] l[:10]: [100, 200, 300, 400, 500] l[10:] []

append()

Чтобы добавить в конец списка новый элемент применяется метод append()

Операция

x.append("z")

эвивалентна

x[len(x):] = "z"

x.append("z") и x[len(x):] = "z" дадут одинаковый результат но в целом x.append(что-то) и x[len(x):] = что-то - не являются полными аналогами так как если что-то - это

Пример

x = ['a','b','c'] x.append('d') print(x) print(len(x)) x[len(x):] = 'e' print(x) print(len(x))

['a','b','c','d'] 4 ['a','b','c','d','e'] 5

Нужно понимать, что .append() добавляет что-то как один последний элемент списка.

То есть, если вы хотите совместить два списка .append() вместо этого запишет второй список как последний элемент первого.

first = ['a', 'b'] second = ['c', 'd'] first.append(second) print(first)

['a', 'b', ['c', 'd']]

Для соединения списков в один используется .extend()

Другие способы добавлять в список

>>> a = [0, 1, 2] >>> b = [3, 4, 5] >>> c = a + b >>> c [0, 1, 2, 3, 4, 5] >>> c += [6, 7, 8] >>> c [0, 1, 2, 3, 4, 5, 6, 7, 8] >>> c.extend([9, 10, 11]) >>> c [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

.extend()

list.extend(iterable) Extend the list by appending all the items from the iterable. Equivalent to a[len(a):] = iterable.

first = ['a', 'b'] second = ['c', 'd'] first.extend(second) print(first)

['a', 'b', 'c', 'd']

Копировать список

# Copy l = [100, 200, 300, 400, 500] t = l print("\n# t = l") print("t is l =", t is l) # True r = l[:] print("\n# r = l[:]") print("r is l = ", r is l) # False print("r == l = ", r == l) # True u = l.copy() print("\n# u = l.copy()") print("u is l = ", u is l) # False v = list(l) print("\n# v = list(l)") print("v is l = ", v is l) # False

# t = l t is l = True # r = l[:] r is l = False r == l = True # u = l.copy() u is l = False # v = list(l) v is l = False

a = [ [1, 2], [3, 4] ] b = a[:] print(a is b) # False print(a == b) # True print(a[0]) # [1, 2] print(b[0]) # [1, 2] print(a[0] is b[0]) # True a[0] = [8, 9] print(a[0]) # [8, 9] print(b[0]) # [1, 2] a[1].append(5) print(a[1]) # [3, 4, 5] print(b[1]) # [3, 4, 5] print(a) # [[8, 9], [3, 4, 5]] print(b) # [[1, 2], [3, 4, 5]]

False True [1, 2] [1, 2] True [8, 9] [1, 2] [3, 4, 5] [3, 4, 5] [[8, 9], [3, 4, 5]] [[1, 2], [3, 4, 5]]

К спискам можно применять умножение

s = [ [-1, +1] ] * 5 print(s) s[2].append(7) print(s)

[21, 37, 21, 37, 21, 37, 21, 37] [0, 0, 0, 0, 0, 0, 0, 0, 0]

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

s = [ [-1, +1] ] * 5 print(s) s[2].append(7) print(s)

[[-1, 1], [-1, 1], [-1, 1], [-1, 1], [-1, 1]] [[-1, 1, 7], [-1, 1, 7], [-1, 1, 7], [-1, 1, 7], [-1, 1, 7]]

Как видите семёрка добавилась везде, потому что был изменён исходный объект из которого умножением создавался список

w = "the heihei.ru website was forked from andreyolegovich.ru in 2018 simultaneously with the topbicyle.ru website".split() print(w) i = w.index('was') print(i) # 3 print(w[i]) # was print(w.count("the")) # 2 print("heihei.ru" in w) # True print("andreyolegovich.ru" not in w) # True

['the', 'heihei.ru', 'website', 'was', 'forked', 'from', 'andreyolegovich.ru', 'in', '2018', 'simultaneously', 'with', 'the', 'topbicyle.ru', 'website'] 3 was 2 True True

len()

Длину списка можно узнать с помощью функции len()

>>> l = ["Pluralsight", "OTUS", "GeekBrains"]
>>> print(len(l))

3

insert()

Чтобы добавить новый элемент в начало списка применяется метод insert()

lst.insert(0, 'z')
print(l)

['z','a','b','c','d']

print(len(lst))

5

С помощью insert() можно вставить элемент в любое место в списке

Нужно передать в insert() индекс того места в которое вы хотите поместить элемент

lst.insert(3, 'j')
print(lst)

['z','a','b','j','c','d']

print(len(lst))

6

split() и join()

Превратить строку в список можно с помощью split()

Собрать список в строку - с помощью join()

>>> s = 'Please visit website' >>> s 'Please visit website' >>> a = s.split() >>> a ['Please', 'visit', 'website'] >>> a.insert(2, "topbicycle.ru") >>> a ['Please', 'visit', 'topbicycle.ru', 'website'] >>> s = ' '.join(a) >>> s 'Please visit topbicycle.ru website'

Чтобы удалить последний элемент списка применяется метод pop()

lst = ['a', 'b', 'c']
lst.pop()
print(lst)

['a', 'b']

print(len(lst))

2

pop(0)

Чтобы удалить первый элемент списка

lst = ['a', 'b', 'c']
lst.pop(0)
print(lst)

['b', 'c']

print(len(lst))

2

Чтобы удалить произвольный элемент списка передайте в pop() его индекс

lst = ['a', 'b', 'c']
lst.pop(1)
print(lst)

['a', 'c']

print(len(lst))

2

del

Удалять элементы из списка можно с помощью del

>>> c = "Armenia Finland Georgia Germany Italy Norway Russia Spain Sweden".split() >>> c ['Armenia', 'Finland', 'Georgia', 'Germany', 'Italy', 'Norway', 'Russia', 'Spain', 'Sweden'] >>> del c[3] >>> c ['Armenia', 'Finland', 'Georgia', 'Italy', 'Norway', 'Russia', 'Spain', 'Sweden'] >>> c.remove('Norway') >>> c ['Armenia', 'Finland', 'Georgia', 'Italy', 'Russia', 'Spain', 'Sweden'] >>> del c[c.index('Sweden')] >>> c ['Armenia', 'Finland', 'Georgia', 'Italy', 'Russia', 'Spain']

reverse() и sort()

>>> d = [1, 5, 70] >>> d.reverse() >>> d [70, 5, 1] >>> e = [8, 3, 14] >>> e.sort() >>> e [3, 8, 14] >>> e.sort(reverse=True) >>> e [14, 8, 3]

>>> w = 'Please visit topbicycle.ru website'.split() >>> w ['Please', 'visit', 'topbicycle.ru', 'website'] >>> w.sort(key=len) >>> w ['visit', 'Please', 'website', 'topbicycle.ru']

>>> x = [4, 9, 2, 1] >>> y = sorted(x) >>> y [1, 2, 4, 9] >>> x [4, 9, 2, 1] >>> p = [9, 3, 1, 0] >>> q = reversed(p) >>> q <list_reverseiterator object at 0x7f93ddd42280> >>> list(q) [0, 1, 3, 9]

zip

С помощью функции zip() можно из двух списков создать список кортежей.

>>> languages = ['Java', 'Python', 'JavaScript'] >>> versions = [18, 3, 2015] >>> result = zip(languages, versions) >>> print(list(result))

[('Java', 18), ('Python', 3), ('JavaScript', 2015)]

РЕКЛАМА хостинга Beget, которым я пользуюсь более десяти лет

Изображение баннера

Конец рекламы хостинга Beget, который я всем рекомендую.

Похожие статьи
Встроенные коллекции
Списки []
Создать список
list comprehension: Генератор списков
Задачи
if, elif, else
Циклы
Генератор словарей
Генератор множеств

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: