跳转到主要内容
模块 3 · 第 1 课(共 4)课程中的9/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_third_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]。将其分配给reverse_items。

3 次尝试后可用的解决方案