Перейти до основного вмісту
Модуль 3 · Урок 1 із 49/36 у курсі~12 min
Модульні уроки (1/4)

списки

Список — це впорядкована та змінна послідовність елементів. Це найчастіше використовувана структура даних у Python: ви створюєте її за допомогою [] та змінюєте її з набором методів, які варто запам’ятати.

Створення списку

Python
vuota = []
numeri = [10, 20, 30]
mista = [1, "due", 3.0, True, None]    # tipi diversi: legale ma raro

Доступ за індексом і фрагментом

Індекси починаються з 0. Від’ємні індекси відраховуються справа:

Python
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], викликає виняток.

Зміна списку

Python
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

Сортування

Дві форми — важливо їх розрізняти:

Python
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

Довжина, членство, ітерація

Python
len(nums)              # quanti elementi
3 in nums              # True/False
for n in nums:
    print(n)

Копіювання списку

a = b не копіює — він просто створює другу назву для того самого списку. до насправді копіювати:

Python
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[:].

Спробуйте

вправи#python.m3.l1.e1
Спроби: 0Завантаження…

Маючи список `nums = [5, 2, 8, 1, 9, 3]`, побудуйте `first_three_sorted` з першими трьома числами nums, відсортованими в порядку зростання. Не змінюйте числа.

Завантаження редактора…
Показати підказку

nums[:3] – це перші три, потім відсортовані (...).

Рішення доступне після 3 спроб

Повторна вправа

вправи#python.m3.l1.e2
Спроби: 0Завантаження…

Починаючи з `words = ['ciao']`, додайте 'mondo' в кінці, потім вставте '!' на початку. Оцініть `слова`.

Завантаження редактора…
Показати підказку

додати в хвіст, вставити (0, ...) в голову.

Рішення доступне після 3 спроб

Додатковий виклик

вправи#python.m3.l1.e3
Спроби: 0Завантаження…

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 спроб