Chuyển đến nội dung chính
Mô-đun 3 · Bài học 1 trong tổng số 49/36 trong khóa học~12 min
Bài học theo mô-đun (1/4)

Danh sách

danh sách là một chuỗi các phần tử có thứ tự và có thể thay đổi. Đó là cấu trúc dữ liệu được sử dụng nhiều nhất trong Python: bạn tạo một cấu trúc dữ liệu bằng [] và sửa đổi nó với một tập hợp các phương pháp đáng ghi nhớ.

Tạo danh sách

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

Truy cập theo chỉ mục và lát cắt

Các chỉ mục bắt đầu tại 0. Các chỉ số âm được tính từ bên phải:

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

Một lát không bao giờ tăng IndexError: nếu nó nằm ngoài phạm vi, nó sẽ trả về một danh sách phụ trống. Thay vào đó, việc truy cập trực tiếp như parole[10] sẽ làm tăng ngoại lệ.

Sửa đổi danh sách

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

Sắp xếp

Hai hình thức - điều quan trọng là phải phân biệt chúng:

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

Độ dài, thành viên, lặp lại

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

Sao chép một danh sách

a = b không sao chép — nó chỉ tạo tên thứ hai cho cùng một danh sách. Đến thực sự sao chép:

Python
copia = lista[:]            # slice completo
copia = list(lista)         # costruttore esplicito
copia = lista.copy()        # metodo

(Đây là tất cả các bản sao nông — các phần tử lồng nhau vẫn được chia sẻ.)

Sao chép danh sách: coi chừng tài liệu tham khảo

Trong Python, khi bạn viết list_b = list_a, bạn không tạo bản sao: bạn chỉ tạo tham chiếu thứ hai. Việc sửa đổi list_b cũng sẽ thay đổi list_a. Để tạo một bản sao độc lập thực sự, bạn phải viết list_b = list_a.copy() hoặc sử dụng tính năng cắt hoàn toàn: list_b = list_a[:].

Hãy thử nó

tập thể dục#python.m3.l1.e1
Nỗ lực: 0Đang tải…

Cho danh sách `nums = [5, 2, 8, 1, 9, 3]`, hãy xây dựng `first_two_sorted` với ba số đầu tiên của các số được sắp xếp theo thứ tự tăng dần. Không sửa đổi số.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

nums[:3] là ba số đầu tiên, sau đó được sắp xếp (...).

Giải pháp khả dụng sau 3 lần thử

Xem lại bài tập

tập thể dục#python.m3.l1.e2
Nỗ lực: 0Đang tải…

Bắt đầu từ `words = ['ciao']`, thêm 'mondo' vào cuối, sau đó chèn '!' lúc đầu. Đánh giá `từ`.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

nối vào đuôi, chèn (0, ...) vào đầu.

Giải pháp khả dụng sau 3 lần thử

Thử thách bổ sung

tập thể dục#python.m3.l1.e3
Nỗ lực: 0Đang tải…

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`.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Cắt với bước phủ định là [::-1]. Gán nó cho Reverse_items.

Giải pháp khả dụng sau 3 lần thử