Списки Python

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

Введение

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

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

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

Получился список из трёх элементов. У каждого есть уникальный индекс.

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

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

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

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

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]) # All list elements print("l[:]:\n", l[:])

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]

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

# 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("urn.su" 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

append()

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

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

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

print(len(l))

4

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

>>> 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]

insert()

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

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

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

print(len(l))

5

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

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

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

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

print(len(l))

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()

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

['a', 'b']

print(len(l))

2

pop(0)

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

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

['b', 'c']

print(len(l))

2

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

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

['a', 'c']

print(len(l))

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)]

Как создавать списки

С помощью цикла for

Можно использовать цикл for для создания списка.

Это делается за три шага

  1. Создать пустой список
  2. Пройтись по итерируемому объекту или нескольким объектам.
  3. Дописать каждый элемент в конец списка

Если вы хотите создать список, содержащий первые десять полных квадратов, то вы можете выполнить эти шаги в трех строках кода:

>>> squares = [] >>> for i in range(10): ... squares.append(i * i) >>> squares

Или даже в двух

>>> squares = [] >>> for i in range(10): squares.append(i * i) >>> squares

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Сперва создаётся пустой список, squares.

Затем, с помощью цикла for происходит итерация по range(10).

Наконец, каждое число умножается само на себя и результат добавляется в конец списка.

С помощью map()

map() предоставляет альтернативный подход, основанный на функциональном программировании.

В map() передаются функция и итерируемый объект и map() создаёт новый итерируемый объект.

o = map(function, iterable)

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

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

txns = [1.11, 23.45, 45.5, 61.4] TAX_RATE = .08 def get_price_with_tax(txn): return txn * (1 + TAX_RATE) final_prices = map(get_price_with_tax, txns) print(list(final_prices))

[1.1988, 25.326, 49.14, 66.312]

Здесь у вас есть итеративный txns и функция get_price_with_tax(). Вы передаете оба этих аргумента в map() и сохраняете результирующий объект в final_prices.

Вы можете легко преобразовать этот объект карты в список с помощью функции list().

Абстракция списка

List Comprehension - Абстракция списков или списковое включение или генератор списков.

Третий способ создавать списки это абстракция списков.

С помощью этого элегантного похода можно переписать цикл for из первого примера всего в одну строку:

>>> squares = [i * i for i in range(10)] >>> squares

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Подробнее про этот способ вы можете прочитать в статье «List Comprehension в Python»

Похожие статьи
Встроенные коллекции
Списки []
list comprehension: Абстракция списка
Python
if, elif, else
Циклы
Абстракция множеств и словарей
Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@eth1.ru если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Хотите поддержать сайт материально
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......