© Яценко Р.Н., 2019-2020
Во многих задачах нужно сохранять всю обрабатываемую последовательность элементов в памяти, например, если бы нам требовалось отсортировать все элементы последовательности
Для хранения таких данных можно использовать структуру данных, называемую в Python список (в большинстве языков программирования используется термин “массив”)
Primes = [2, 3, 5, 7, 11, 13] print(Primes[0], Primes[1], Primes[2], Primes[3], Primes[4], Primes[5]) print(Primes[-1], Primes[-6]) Rainbow = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet'] print(Rainbow)
2 3 5 7 11 13
13 2
['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']
Длину списка, то есть количество элементов в нем, можно узнать при помощи функции len
:
Rainbow = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet'] print(Rainbow[0]) Rainbow[0] = 'красный' print('Выведем радугу') for i in range(len(Rainbow)): print(Rainbow[i])
Red
Выведем радугу
красный
Orange
Yellow
Green
Blue
Indigo
Violet
Считывание списка с известным количеством элементов. Исходные данные:
5
1809
1854
1860
1891
1925
a = [] # заводим пустой список n = int(input()) # считываем количество элементов в списке for i in range(n): new_element = int(input()) # считываем очередной элемент a.append(new_element) # добавляем его в список print(a)
[1809, 1854, 1860, 1891, 1925]
Сокращенная версия
5
1809
1854
1860
1891
1925
a = [] for i in range(int(input())): a.append(int(input())) print(a)
[1809, 1854, 1860, 1891, 1925]
a = [1, 2, 3] b = [4, 5] c = a + b print(c) d = b * 3 print(d) print([7, 8] + [9]) print([0, 1] * 3)
[1, 2, 3, 4, 5]
[4, 5, 4, 5, 4, 5]
[7, 8, 9]
[0, 1, 0, 1, 0, 1]
Версия с поэлементным изменением. Исходные данные:
5
1809
1854
1860
1891
1925
a = [0] * int(input()) for i in range(len(a)): a[i] = int(input()) print(a)
[1809, 1854, 1860, 1891, 1925]
Вывод списка
a = [1, 2, 3, 4, 5] for i in range(len(a)): print(a[i])
1
2
3
4
5
a = [1, 2, 3, 4, 5] for elem in a: print(elem, end=' ')
1 2 3 4 5
input()
как строкуsplit()
, возвращающий список строк, которые получатся, если исходную строку разрезать на части по пробелам:s = input() # s == '1 2 3' a = s.split() # a == ['1', '2', '3'] print(a)
['1', '2', '3']
Считывание списка с неизвестным количеством элементов в строку. Исходные данные:
1809 1854 1860 1891 1925
a = input().split() for i in range(len(a)): a[i] = int(a[i]) print(a)
[1809, 1854, 1860, 1891, 1925]
У метода split()
есть необязательный параметр, который определяет, какая строка будет использоваться в качестве разделителя между элементами списка:
a = '192.168.0.1'.split('.') print(a)
['192', '168', '0', '1']
Метод join
возвращает строку, полученную соединением элементов переданного списка в одну строку, при этом между элементами списка вставляется разделитель, равный той строке, к которой применяется метод:
a = ['red', 'green', 'blue'] print(' '.join(a)) print(''.join(a)) print('***'.join(a))
red green blue
redgreenblue
red***green***blue
A[i:j]
срез из j-i
элементов A[i], A[i+1], ..., A[j-1]
A[i:j:-1]
срез из i-j
элементов A[i], A[i-1], ..., A[j+1]
(то есть меняется порядок элементов)A[i:j:k]
срез с шагом k
: A[i], A[i+k], A[i+2*k]
,… . Если значение k<0
, то элементы идут в противоположном порядке.Каждое из чисел i
или j
может отсутствовать, что означает “начало списка” или “конец списка”
Срезы
a = [10, 20, 30, 40, 50, 60] print(a[1:4]) print(a[4::-1]) print(a[:4:2]) print(a[::3]) s = 'abcdef' print(s[1:4]) print(s[1:]) print(s[:4])
[20, 30, 40]
[50, 40, 30, 20, 10]
[10, 30]
[10, 40]
bcd
bcdef
abcd
Изменение срезов
A = [1, 2, 3, 4, 5] A[2:4] = [7, 8, 9] print(A) A = [1, 2, 3, 4, 5, 6, 7] A[::2] = [10, 20, 30, 40] print(A) A = [1, 2, 3, 4, 5, 6, 7] A[::-2] = [10, 20, 30, 40] print(A)
[1, 2, 7, 8, 9, 5]
[10, 2, 20, 4, 30, 6, 40]
[40, 2, 30, 4, 20, 6, 10]
x in A |
Проверить, содержится ли элемент в списке (True/False ) |
x not in A |
То же самое, что not(x in A) |
min(A) |
Наименьший элемент списка |
max(A) |
Наибольший элемент списка |
A.index(x) |
Индекс первого вхождения элемента x в список |
A.count(x) |
Количество вхождений элемента x в список |
Генераторы – это выражения, позволяющие заполнить список по формуле:
[выражение for переменная in последовательность]
range
)Создание списков при помощи генераторов
a = [0 for i in range(5)] print(a) n = 5 a = [i ** 2 for i in range(n)] print(a) n = 5 a = [i ** 2 for i in range(1, n + 1)] print(a)
[0, 0, 0, 0, 0]
[0, 1, 4, 9, 16]
[1, 4, 9, 16, 25]
Создание списка из случайных чисел
from random import randrange n = 10 a = [randrange(1, 10) for i in range(n)] print(a)
[4, 9, 5, 8, 9, 9, 2, 8, 6, 3]
Считывание списков при помощи генераторов
1809 1854 1860 1891 1925
a = [int(s) for s in input().split()] print(a)
[1809, 1854, 1860, 1891, 1925]
5
1809 1854 1860 1891 1925
a = [int(input()) for i in range(int(input()))] print(a)
[1809, 1854, 1860, 1891, 1925]
Вывод списка чисел при помощи генератора
a = [1, 2, 3] print(' '.join([str(i) for i in a]))
1 2 3
© Яценко Р.Н., 2019-2020