-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path05_lists_tutorial.py
More file actions
146 lines (111 loc) · 5.47 KB
/
05_lists_tutorial.py
File metadata and controls
146 lines (111 loc) · 5.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# 1. Создание списков
# Список - упорядоченная изменяемая коллекция элементов
empty_list = []
numbers = [1, 2, 3, 4, 5]
mixed = [1, "текст", 3.14, True, [1, 2]] # Могут содержать разные типы
print(f"Пустой список: {empty_list}")
print(f"Числа: {numbers}")
print(f"Смешанный список: {mixed}")
# 2. Доступ к элементам (индексация)
fruits = ["яблоко", "банан", "апельсин", "груша"]
print(f"Первый элемент: {fruits[0]}") # яблоко
print(f"Последний элемент: {fruits[-1]}") # груша
print(f"Второй с конца: {fruits[-2]}") # апельсин
# 3. Срезы (slicing)
print(f"Первые два элемента: {fruits[0:2]}") # ['яблоко', 'банан']
print(f"С третьего до конца: {fruits[2:]}") # ['апельсин', 'груша']
print(f"Последние два: {fruits[-2:]}") # ['апельсин', 'груша']
print(f"Каждый второй: {fruits[::2]}") # ['яблоко', 'апельсин']
print(f"В обратном порядке: {fruits[::-1]}") # ['груша', 'апельсин', 'банан', 'яблоко']
# 4. Изменение элементов
numbers = [1, 2, 3, 4, 5]
numbers[0] = 10 # Изменить первый элемент
print(f"После изменения: {numbers}")
numbers[1:3] = [20, 30] # Изменить срез
print(f"После изменения среза: {numbers}")
# 5. Добавление элементов
fruits = ["яблоко", "банан"]
# append() - добавить в конец
fruits.append("апельсин")
print(f"После append: {fruits}")
# insert() - вставить на определенную позицию
fruits.insert(1, "груша") # Вставить на индекс 1
print(f"После insert: {fruits}")
# extend() - добавить несколько элементов
fruits.extend(["киви", "манго"])
print(f"После extend: {fruits}")
# Альтернатива extend - конкатенация
fruits = fruits + ["лимон"]
print(f"После конкатенации: {fruits}")
# 6. Удаление элементов
numbers = [1, 2, 3, 4, 5, 3]
# remove() - удалить первое вхождение значения
numbers.remove(3) # Удалит первую тройку
print(f"После remove(3): {numbers}")
# pop() - удалить по индексу и вернуть значение
last = numbers.pop() # Без аргумента удаляет последний
print(f"Удалили: {last}, осталось: {numbers}")
second = numbers.pop(1) # Удалить элемент с индексом 1
print(f"Удалили: {second}, осталось: {numbers}")
# del - удалить элемент или срез
numbers = [1, 2, 3, 4, 5]
del numbers[0] # Удалить первый элемент
print(f"После del: {numbers}")
# clear() - очистить весь список
numbers.clear()
print(f"После clear: {numbers}")
# 7. Поиск элементов
fruits = ["яблоко", "банан", "апельсин", "банан"]
# in - проверка наличия
print(f"'банан' in fruits: {'банан' in fruits}") # True
# index() - найти индекс первого вхождения
index = fruits.index("банан")
print(f"Индекс 'банан': {index}")
# count() - подсчитать количество вхождений
count = fruits.count("банан")
print(f"Количество 'банан': {count}")
# 8. Сортировка
numbers = [5, 2, 8, 1, 9, 3]
# sort() - сортирует список на месте (изменяет оригинал)
numbers.sort()
print(f"После sort(): {numbers}")
numbers.sort(reverse=True) # В обратном порядке
print(f"После sort(reverse=True): {numbers}")
# sorted() - возвращает новый отсортированный список (не изменяет оригинал)
original = [5, 2, 8, 1]
sorted_list = sorted(original)
print(f"Оригинал: {original}, sorted: {sorted_list}")
# 9. Другие полезные методы
numbers = [1, 2, 3]
# reverse() - перевернуть список
numbers.reverse()
print(f"После reverse(): {numbers}")
# copy() - создать копию списка
copy = numbers.copy()
print(f"Копия: {copy}")
# 10. Длина списка
print(f"len(fruits): {len(fruits)}")
# 11. Списки в качестве стека (LIFO - Last In, First Out)
stack = []
stack.append(1) # Положить в стек
stack.append(2)
stack.append(3)
print(f"Стек: {stack}")
top = stack.pop() # Взять из стека
print(f"Взяли: {top}, осталось: {stack}")
# 12. Многомерные списки (списки списков)
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(f"Первая строка: {matrix[0]}")
print(f"Элемент [1][2]: {matrix[1][2]}") # 6
# 13. List unpacking (распаковка)
fruits = ["яблоко", "банан", "апельсин"]
first, second, third = fruits
print(f"first: {first}, second: {second}, third: {third}")
# С * можно собрать остальные элементы
numbers = [1, 2, 3, 4, 5]
first, *rest, last = numbers
print(f"first: {first}, rest: {rest}, last: {last}")