📋
Danh Sách
Chapter 7
Danh Sách
List
Lưu trữ nhiều giá trị trong một biến duy nhất — sắp xếp, tìm kiếm, thêm, xóa dễ dàng!
Phần 1 — List là gì?
List — Giỏ đựng nhiều thứ cùng lúc!
Cho đến giờ mỗi biến chỉ chứa một giá trị. List cho phép chứa nhiều giá trị trong cùng một biến — giống chiếc giỏ đi chợ!
🛒
List = Danh sách mua sắm
Thay vì ghi từng tờ giấy riêng: bút, thước, sách, balo... bạn ghi tất cả vào một tờ danh sách. Python cũng vậy — một List chứa được tất cả!
# Tạo list — dùng dấu ngoặc vuông [ ] do_dung = ["bút", "thước", "sách", "balo"] diem_so = [8, 9, 7, 10, 6.5] hon_hop = ["Nam", 13, 9.5, True] # trộn nhiều kiểu! rong = [] # list rỗng print(do_dung) print("Số phần tử:", len(do_dung))
['bút', 'thước', 'sách', 'balo']
Số phần tử: 4
Số phần tử: 4
Phần 2 — Chỉ số (Index)
Truy cập phần tử — Chỉ số bắt đầu từ 0!
Mỗi phần tử trong list có một chỉ số (index). Lưu ý quan trọng: bắt đầu từ 0, không phải 1!
"Toán"
0
-5
"Văn"
1
-4
"Anh"
2
-3
"Lý"
3
-2
"Hóa"
4
-1
🔵 Chỉ số dương (từ đầu) | 🔴 Chỉ số âm (từ cuối)
mon = ["Toán", "Văn", "Anh", "Lý", "Hóa"] # Truy cập bằng chỉ số dương print(mon[0]) # phần tử đầu tiên print(mon[2]) # phần tử thứ 3 # Truy cập bằng chỉ số âm (đếm từ cuối) print(mon[-1]) # phần tử cuối cùng print(mon[-2]) # phần tử kề cuối # Thay đổi giá trị mon[1] = "Sử" print(mon)
Toán
Anh
Hóa
Lý
['Toán', 'Sử', 'Anh', 'Lý', 'Hóa']
Anh
Hóa
Lý
['Toán', 'Sử', 'Anh', 'Lý', 'Hóa']
Mẹo nhớ chỉ số âm!
[-1] luôn là phần tử cuối cùng — rất tiện khi bạn không biết list dài bao nhiêu!
Cắt lát (Slicing) — Lấy một đoạn của list
Dùng cú pháp list[start:end] để lấy một phần của list:
Ví dụ: ds = [10, 20, 30, 40, 50]
ds[1:3]
→
[20, 30]
từ index 1 đến trước 3
ds[:3]
→
[10, 20, 30]
từ đầu đến trước 3
ds[2:]
→
[30, 40, 50]
từ index 2 đến hết
ds[::2]
→
[10, 30, 50]
cách 2 phần tử một
ds[::-1]
→
[50, 40, 30, 20, 10]
đảo ngược list!
Phần 3 — Các phương thức của List
Thêm, xóa, tìm kiếm trong List
List có rất nhiều phương thức hữu ích — đây là những cái dùng thường xuyên nhất:
.append(x)
Thêm x vào cuối list
ds.append(5) → [..., 5]
.insert(i, x)
Thêm x vào vị trí i
ds.insert(0, 99) → [99, ...]
.remove(x)
Xóa phần tử có giá trị x
ds.remove("Văn")
.pop(i)
Xóa & trả về phần tử ở vị trí i
ds.pop() → xóa cuối
.sort()
Sắp xếp list tại chỗ (tăng dần)
ds.sort() → [1,2,3,4]
.index(x)
Tìm vị trí của giá trị x
ds.index("Toán") → 0
.count(x)
Đếm số lần x xuất hiện
ds.count(5) → 2
in / not in
Kiểm tra x có trong list không
"Toán" in ds → True
hoc_sinh = ["An", "Bình", "Chi"] hoc_sinh.append("Dung") # thêm vào cuối hoc_sinh.insert(1, "Bảo") # thêm vào vị trí 1 print(hoc_sinh) hoc_sinh.remove("Bình") # xóa "Bình" print(hoc_sinh) print("Chi" in hoc_sinh) # kiểm tra có "Chi" không hoc_sinh.sort() # sắp xếp A→Z print(hoc_sinh)
['An', 'Bảo', 'Bình', 'Chi', 'Dung']
['An', 'Bảo', 'Chi', 'Dung']
True
['An', 'Bảo', 'Chi', 'Dung']
['An', 'Bảo', 'Chi', 'Dung']
True
['An', 'Bảo', 'Chi', 'Dung']
Phần 4 — Duyệt List với vòng lặp
Kết hợp List + for — Siêu mạnh!
Vòng lặp for và List là cặp đôi hoàn hảo nhất trong Python:
diem = [8, 6, 9, 7, 10, 5] # Duyệt và in từng điểm for d in diem: if d >= 8: print(f"⭐ {d} — Giỏi!") elif d >= 6: print(f"✅ {d} — Khá") else: print(f"📝 {d} — Trung bình") # Tính tổng và trung bình tong = sum(diem) tb = tong / len(diem) print(f"\nTrung bình: {tb:.1f} | Max: {max(diem)} | Min: {min(diem)}")
⭐ 8 — Giỏi!
✅ 6 — Khá
⭐ 9 — Giỏi!
✅ 7 — Khá
⭐ 10 — Giỏi!
📝 5 — Trung bình
Trung bình: 7.5 | Max: 10 | Min: 5
✅ 6 — Khá
⭐ 9 — Giỏi!
✅ 7 — Khá
⭐ 10 — Giỏi!
📝 5 — Trung bình
Trung bình: 7.5 | Max: 10 | Min: 5
🚀 Dự án nhỏ
Danh sách mua sắm thông minh!
gio_hang = [] print("🛒 GIỎ HÀNG THÔNG MINH") print("Gõ tên đồ vật cần mua, 'xong' để kết thúc\n") while True: mon = input("➕ Thêm vào giỏ: ").strip() if mon.lower() == "xong": break if mon in gio_hang: print(f"⚠️ '{mon}' đã có trong giỏ rồi!") elif mon: gio_hang.append(mon) print(f"✅ Đã thêm '{mon}'") gio_hang.sort() print(f"\n{'='*30}") print(f"📋 GIỎ HÀNG ({len(gio_hang)} món):") for i, mon in enumerate(gio_hang, 1): print(f" {i}. {mon}")
💡 enumerate(list, 1) vừa lấy giá trị vừa đánh số thứ tự — rất tiện để in danh sách đẹp!
🧩 Kiểm tra nhanh!
Bạn đã hiểu List chưa?
Chỉ số của phần tử đầu tiên trong List là mấy?
→ 0
→ 0
Dùng phương thức nào để thêm vào cuối List?
→ .append()
→ .append()
ds[-1] trả về phần tử nào?→ Phần tử cuối cùng
Hàm nào tính tổng các số trong List?
→ sum()
→ sum()