11.2.3.1 создавать список;
11.2.2.1 выполнять доступ к элементам строк, списков и кортежей;
11.2.3.6 определять различия между различными структурами данных;
Python. Списки. Структура данных List.
Что такое списки?
Мы уже рассмотрели такие структуры данных, как множества и строки. Познакомимся еще с одной — список (list). Списки широко используются в программах.
Список — это упорядоченный составной тип данных, изменяемый набор объектов произвольных типов.
Создание списков
Есть два варианта создания пустых списков:
# первый вариант
lst = list()
print(lst) # будет выведен пустой список: []
# второй вариант
lst = []
print(lst) # будет выведен пустой список: []
Для создания непустого списка нужно в квадратные скобки добавить элементы через запятую.
animals = ["tiger", "fox", "wolf", "rabbit"]
print(animals) # будет выведено: ['tiger', 'fox', 'wolf', 'rabbit']
numbers = [35, 23, 19, 30]
print(numbers) # будет выведено: [35, 23, 19, 30]
Особенности списков:
- Список содержит множество элементов под одним именем
- Элементы списка могут повторяться
- Элементы списка упорядочены и каждый элемент списка имеет свой индекс
- Спискам доступна операция среза
- Элементы списка могут быть изменены
- Элементы списка могут иметь различные типы данных.
Генерация списков
Помните что случится если строку умножить на число?
s = "!" * 5
print(s) # будет выведено: !!!!!
Операция умножения на число применима и к спискам. Например, нам нужно создать список, который изначально содержит десять нулевых элементов. Все элементы в списке будут одинаковыми, каждый из них будет отдельным элементом в списке.
lst = [0] * 5
print(lst) # будет выведено: [0, 0, 0, 0, 0]
# другой пример
print(['x', 'y'] * 3) # будет выведено: ['x', 'y', 'x', 'y', 'x', 'y']
Индексирование списков
Элементы списка имеют свои индексы; поэтому в отличии от структуры данных set, в списках важен порядок элементов !!!
lst = ["tiger", "fox", "wolf", "rabbit"]
print(lst[2]) # будет выведено: wolf
print(lst[0]) # будет выведено: tiger
print(lst[7]) # будет выведено сообщение об ошибке IndexError: list index out of range
numbers = [2, 5, 8, 13, 21]
print(numbers[1] + numbers[3]) # будет выведено: 18
Добавление элементов в список
Метод append используется для добавления элементов в конец списков, поскольку все элементы индексируются.
lst = ["tiger", "fox", "wolf", "rabbit"]
lst.append("lion") # элемент добавляется в конец списка
print(lst) # будет выведено: ['tiger', 'fox', 'wolf', 'rabbit', 'lion']
Мы также можем расширить существующий список любым итерируемым (перечисляемым) объектом, используя метод extend.
lst = [1, 2, 3]
another_lst = [4, 5, 6]
lst.extend(another_lst)
print(lst) # получим: [1, 2, 3, 4, 5, 6]
If we expand the list with a string, then each character of the string becomes a separate element of the list.
lst = []
another_lst = "world"
lst.extend(another_lst)
print(lst) # will print: ['w', 'o', 'r', 'l', 'd']
Если мы расширим список строкой, то каждый символ строки станет отдельным элементом списка.
lst = [1, 2, 3]
another_set = {'w', 'o', 'r', 'l', 'd'}
lst.extend(another_set)
print(lst) # получим: [1, 2, 3, 'w', 'o', 'r', 'l', 'd']
Изменение элемента списка
В отличии от строк, отдельные элементы списка могут быть изменены.
lst = [1, 2, 5]
lst[1] = 7
print(lst) # получим: [1, 7, 5]
Многие операции, которые можно выполнять с другими структурами данных, применимы и к спискам.
lst = [1, 2, 3]
print(len(lst)) # вывод количества элементов списка
lst += [4, 5] # списки могут быть увеличены на другой спсиок
print(lst) # получим: [1, 2, 3, 4, 5]
if 1 in lst: # проверка на наличие элемента в списке
print('Находится в списке')
else:
print('Нет в списке')
Вывод элементов списка
Как и строки, элементы списка также можно перебирать в цикле for, используя индексы и перебирая элементы.
lst = ["tiger", "fox", "wolf", "rabbit"]
for i in range(len(lst)): # использование индексов элементов списка
print('List item', i + 1, '-', lst[i])# получим: все элементы по очереди
for elem in lst: # перебор элементов списка
print(elem) # получим: все элементы по очереди
-------------------------------------------------- ------
List item 1 - tiger
List item 2 - fox
List item 3 - wolf
List item 4 - rabbit
tiger
fox
wolf
rabbit
Заполнение элементов списка входными данными
n = int(input()) # ввести количество элементов в списке
a = [] # создание пустого списка
print('Enter', n, 'values:')
for i in range(n): # определяет номер итерации (повторения)
a.append(input()) # добавляет введенное значение в список
print('The result is a list of strings:', a) # вывод списка
Срезы списков
Поскольку список содержит индексированные элементы, к ним можно применять срезы так же, как и к строкам.
months = ['January', 'February', 'March', 'April', 'May', 'June', 'July',
'August', 'September', 'October', 'November', 'December']
spring = months[2:5] # spring == ['March', 'April', 'May']
for month in spring:
print(month)
Срезы также можно использовать для присвоения новых значений элементам списка. Например, если мы решили перевести названия летних месяцев на английский язык, мы можем сделать это с помощью среза.
months = ['January', 'February', 'March', 'April', 'May', 'June', 'July',
'August', 'September', 'October', 'November', 'December']
months[5:8] = ['JUNE', 'JULY', 'AUGUST']
print(months)
----------------------------------------
['January', 'February', 'March', 'April', 'May', 'JUNE', 'JULY', 'AUGUST', 'September', 'October', 'November', 'December']
Удаление элементов
Функция del используется для удаления элементов списка.
a = [1, 2, 3, 4, 5, 6]
del a[2] # удаление элемента с индексом 2
print(a) # получим: [1, 2, 4, 5, 6]
Элемент по указанному индексу удаляется, а список перестраивается.
Функция del также работает со срезами: например, вы можете удалить все элементы на четных позициях в исходном списке.
a = [1, 2, 3, 4, 5, 6]
del a[::2]
print(a) # получим: [2, 4, 6]
Отличие списков и массивов
Списки иногда называют массивами, но это неправильно, так как массивы хранят данные только одного типа и находятся в памяти в одной последовательности, а элементы списка могут содержать значения разных типов и могут быть разбросаны по памяти хаотично, поэтому обработка списков медленнее, чем массивов, но в то же время списки более гибки в программировании.
Вопросы:
- Что такое "список"?
- Как создать список? Пустой список?
- Перчислите функции, которые применяются к спискам и объясните назначение каждой из них.
Упражнения:
Упр 1. Заполните пропуски
Задачи:
1. Напишите программу, в которой объявить список цветов со значениями red, green, blue, yellow, и вывести их в указанной последовательности.
2. Напишите программу на Python для суммирования всех элементов списка.
3. Напишите программу на Python, чтобы получить наибольшее и наименьшее числа из списка.
4. Напишите программу на Python для умножения всех элементов в списке не равных нулю.
5. Напишите программу на Python, чтобы проверить, является ли список пустым или нет.
6. Напишите программу Python для клонирования или копирования списка.
|