Перейти к основному содержимому
Модуль 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[: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]. Назначьте его обратному_элементам.

Решение доступно после 3 попыток