menu_book LESSON MODE

Chapter 7 — Danh Sách List

calendar_today Đăng 27 May 2026
Chapter 7 — Danh Sách List
school

NOW LEARNING

Chapter 7 — Danh Sách List

📋
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!

🗂️

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
🔢

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

['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!
🛠️

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']
🔁

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
🚀 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?

1️⃣Chỉ số của phần tử đầu tiên trong List là mấy?
→ 0
2️⃣Dùng phương thức nào để thêm vào cuối List?
→ .append()
3️⃣ds[-1] trả về phần tử nào?
→ Phần tử cuối cùng
4️⃣Hàm nào tính tổng các số trong List?
→ sum()
Tiến độ: Chapter 7/8
📋

NEXT STEP

Tiếp theo nên học gì

route