Lesson 09: Lists (Danh Sách)

🎯 Mục Tiêu

  • Khám phá List – cấu trúc dữ liệu nền tảng, linh hoạt và được ưa chuộng bậc nhất của Python.
  • Cách lưu trữ một bầy thông tin có trật tự trong ngoặc vuông [ ].
  • Đi sâu vào quyền Thao tác tự do (Mutable): Thêm, cấy, đắp, bóc, cắt danh sách (Append, Insert, Pop, Extend…).
  • Biết mẹo kết hợp cùng List Comprehension để tự động hóa sinh danh sách dài lằng nhằng bằng 1 nốt nhạc.

Khởi tạo List (Creating Lists)

List như 1 chiếc tàu hoả, có nhiều Toa Tàu nối tiếp nhau. Mỗi toa chứa 1 món hàng. Điều bất ngờ là ở Python: Khác hoàn toàn C++, một List có thể chứa cả Thập Cẩm (Vừa tên người, số tuổi, số lương…).

# Tạo cái Tàu Hoả rỗng toếch
hành_trang = []

# Tàu hoả chuyên chở Chữ (Strings)
fruits = ["apple", "banana", "cherry"]

# Tàu hoả chở số nguyên (Numbers)
numbers = [1, 2, 3, 4, 5]

# Tàu hoả "Lẩu Thập Cẩm": Chở Đủ Kiểu!
mixed = [1, "hello", True, 3.14, None]

Lists là MUTABLE (Cho phép Mổ Xẻ Sửa Đổi)

Tuple (bạn sẽ học ở Lesson 10) là Bất Biến. Nghĩa là tạo xong là Cấm đổi chác! Còn List cởi mở, “Lúc nãy thêm nhầm Toa thứ 0 (apple), đợi tẹo tui bóc nó sửa thành Toa (orange) nha!”.

fruits = ["apple", "banana", "cherry"]

# Truy cập (Giống hệch String, bắt đầu từ số 0)
print(fruits[0])  # "apple"
print(fruits[-1]) # "cherry" (Truy cập đuôi ngược)

# BẮT ĐẦU SỬA CHỮA QUÁ KHỨ (Ghi Đè Giá Trị)
fruits[0] = "orange"
print(fruits) # Output: ['orange', 'banana', 'cherry']

Slicing (Cắt Cụm List): Chặt list thành 1 list nhỏ lẻ: fruits[0:2] -> Trả về ['orange', 'banana']

Phương thức thao túng Mảng (List Methods)

Việc sử dụng nhóm hàm sau đây sẽ “xào nấu trực tiếp” lên trên file gốc của cái List đó.

NHÓM BƠM THÊM HÀNG (Adding)

vu_khi = ["Súng", "Kiếm"]

# APPEND: Bơm thêm vào phần ĐUÔI CÙNG của khoang tàu
vu_khi.append("Lựu Đạn") 

# INSERT: Cất nhắc cắm phập món đồ này vào giữa tại vị trí (index) được chỉ định -> Mọi toa tàu khác bị lùi ra sau.
vu_khi.insert(1, "Phi Tiêu") 
# Output: ['Súng', 'Phi Tiêu', 'Kiếm', 'Lựu Đạn']

# EXTEND: Trộn nguyên một đoàn tàu list khác chắp cánh cho đoàn tàu hiện tại.
vu_khi.extend(["Dao", "Khiên"])

NHÓM BÓC VỨT BỎ HÀNG (Removing)

fruits = ["táo", "chuối", "cam", "xoài"]

# REMOVE: Tìm và diệt đúng cái Toa ghi chữ "chuối". (Nếu trong list có 2 trái chuối, nó CHỈ DIỆT thằng chuối ĐẦU TIÊN!)
fruits.remove("chuối")       

# POP: Lấy món số X quăng ra ngoài không thương tiếc (xoá bằng thẻ index) và báo cáo nó là gì.
trai_bi_vut = fruits.pop(0) # Bốc trái Táo vứt đi
trai_cuoi_cung = fruits.pop() # Không truyền số thì Mặc Định sẽ bốc thằng ĐUÔI CÙNG của tàu hoả vứt đi 

# Xóa theo index dùng built-in keyword
del fruits[0]                 

NHÓM SẮP XẾP LẠI KHOANG (Sorting)

numbers = [3, 1, 4, 1, 5]

# Xúc xắc chạy lại toàn bộ khoang, Xếp từ bé đến Lớn tăng dần
numbers.sort()  

# Xếp Đảo Ngược Hạng Từ Cao hạ Thấp (Giỏi xuống Yếu)
numbers.sort(reverse=True) 

# Lệnh len(numbers) dùng đếm TỔNG BỀ DÀY toa tàu
len(numbers)  # Độ dài list là 5 toa.

Bùa phép Ma Thuật: List Comprehension

Một thế võ Cực Kì Lợi Hại và Tự Hào Của Dân Dùng Python để biến cục code dài thòng lòng 4 dòng rườm rà – Trở thành 1 dòng code duy mỹ độc nhất!

Quy luật: [ Cái_Sẽ_Tạo_Ra Vòng_Lặp_For (Câu_Điều_Kiện_Lọc) ]

# THÔNG THƯỜNG: Muốn tạo list chứa các bình phương số 1-10
bình_phương = []
for x in range(1, 11):
    bình_phương.append(x**2)

# MAGICAL LIST COMPREHENSION (Chuẩn pro): Xịn đét 1 dòng!
squares = [x**2 for x in range(1, 11)]

# THÂM CHÍ LẪN BỘ LỌC IF Ở TRONG
evens = [x for x in range(20) if x % 2 == 0]
# Phát ngôn: TẠO biến X --- ĐẾM vòng lặp x nát từ quỹ đạo số 0 đến 19 --- KÉP IF xế nếu x chia hết chẵn thì mới được cho vào List evens!!!

💡 Key Takeaways

  • Bản thân Cấu trúc List đã quá hoàn hảo cho 90% các bài toán dân sự lập trình từ giỏ hàng Siêu thị, Chứa data sinh viên… vì đặc tính Mutable (Dễ bị bẻ cong).
  • Cần ghi nhớ đinh đóng cột: .append() nhồi vào đít đuôi mảng. Còn .pop() bứt đuôi đó quăng đi. (Rất hợp cho tạo kịch bản logic History Lùi/Tiếp).
  • Tích tiểu thành đại để làm chủ được List Comprehension sẽ đưa kỹ năng viết Python Của bạn gạt đi lớp áo phèn và vươn tầm chuyên nghiệp.

➡️ Bài Tiếp Theo Lesson 10 – Tuples

Leave a Reply

Your email address will not be published. Required fields are marked *