Модульні уроки (1/4)
списки
Список — це впорядкована та змінна послідовність елементів. Це
найчастіше використовувана структура даних у Python: ви створюєте її за допомогою [] та змінюєте її
з набором методів, які варто запам’ятати.
Створення списку
vuota = []
numeri = [10, 20, 30]
mista = [1, "due", 3.0, True, None] # tipi diversi: legale ma raroДоступ за індексом і фрагментом
Індекси починаються з 0. Від’ємні індекси відраховуються справа:
parole = ["a", "b", "c", "d"]
parole[0] # 'a'
parole[-1] # 'd' (ultimo)
parole[1:3] # ['b', 'c'] slice [start:stop]
parole[::-1] # ['d', 'c', 'b', 'a'] reverseЗріз ніколи не викликає IndexError: якщо він поза діапазоном, він повертає
порожній підсписок. Натомість прямий доступ, наприклад parole[10], викликає
виняток.
Зміна списку
nums = [1, 2, 3]
nums.append(4) # [1, 2, 3, 4] aggiunge in fondo
nums.insert(0, 0) # [0, 1, 2, 3, 4] inserisce in posizione
nums.extend([5, 6]) # [0, 1, 2, 3, 4, 5, 6] concatena
nums.pop() # 6 estrae ultimo
nums.pop(0) # 0 estrae primo (più lento: O(n))
nums.remove(3) # rimuove la PRIMA occorrenza di 3
nums[1] = 99 # sostituisce per indiceСортування
Дві форми — важливо їх розрізняти:
nums = [3, 1, 4, 1, 5, 9, 2, 6]
nums.sort() # MUTA nums in place, ritorna None
ordinati = sorted(nums) # ritorna NUOVA lista, lascia nums invariata
nums.sort(reverse=True)
sorted(nums, key=lambda n: -n) # ordinamento per chiaveДовжина, членство, ітерація
len(nums) # quanti elementi
3 in nums # True/False
for n in nums:
print(n)Копіювання списку
a = b не копіює — він просто створює другу назву для того самого списку. до
насправді копіювати:
copia = lista[:] # slice completo
copia = list(lista) # costruttore esplicito
copia = lista.copy() # metodo(Це всі неглибокі копії — вкладені елементи залишаються спільними.)
Копіювання списків: стежте за посиланнями
У Python, коли ви пишете list_b = list_a, ви не створюєте копію: ви просто створюєте друге посилання. Зміна list_b також змінить list_a. Щоб створити справжню незалежну копію, ви повинні написати list_b = list_a.copy() або використати повне нарізання: list_b = list_a[:].
Спробуйте
Маючи список `nums = [5, 2, 8, 1, 9, 3]`, побудуйте `first_three_sorted` з першими трьома числами nums, відсортованими в порядку зростання. Не змінюйте числа.
Показати підказку
nums[:3] – це перші три, потім відсортовані (...).
Рішення доступне після 3 спроб
Повторна вправа
Починаючи з `words = ['ciao']`, додайте 'mondo' в кінці, потім вставте '!' на початку. Оцініть `слова`.
Показати підказку
додати в хвіст, вставити (0, ...) в голову.
Рішення доступне після 3 спроб
Додатковий виклик
Given the list `items = [10, 20, 30, 40]`, use slicing to create a new list `reversed_items` containing the same elements but in reverse order. Finally, evaluate `reversed_items`.
Показати підказку
Нарізка з від’ємним кроком [::-1]. Призначте його reversed_items.
Рішення доступне після 3 спроб