1. Khởi động (Engagement)
Trong bài trước chúng ta đã biết cách dùng lệnh append để thêm phần tử vào cuối một danh sách. Vậy Python có lệnh nào dùng để:
- Xóa nhanh một danh sách?
- Chèn thêm phần tử vào đầu hay giữa danh sách?
- Kiểm tra một phần tử có nằm trong một danh sách không?
💡 Câu hỏi suy ngẫm: Em hãy nghĩ về các thao tác thường gặp với danh sách trong thực tế:
- Kiểm tra xem một mặt hàng có trong giỏ hàng không
- Chèn một học sinh mới vào giữa danh sách lớp
- Xóa toàn bộ danh sách sau khi đã xử lý xong
Bài học hôm nay sẽ cung cấp cho em các công cụ mạnh mẽ để làm việc hiệu quả với danh sách.
2. Hình thành kiến thức (Knowledge)
1. Duyệt danh sách với toán tử in
a) Kiểm tra phần tử trong danh sách
Toán tử in dùng để kiểm tra một phần tử có nằm trong danh sách đã cho không. Kết quả trả lại True (Đúng) hoặc False (Sai).
Cú pháp:
Ví dụ:
b) Duyệt từng phần tử của danh sách
Có thể duyệt nhanh từng phần tử của danh sách bằng toán tử in và lệnh for mà không cần sử dụng lệnh range().
Cú pháp:
Ví dụ:
Khi thực hiện lệnh này, biến k sẽ lần lượt nhận các giá trị trong dãy A.
2. Các phương thức làm việc với danh sách
a) Lệnh clear() - Xóa toàn bộ danh sách
b) Lệnh remove(value) - Xóa phần tử theo giá trị
Lệnh remove(value) sẽ xóa phần tử đầu tiên của danh sách có giá trị value. Nếu không có phần tử nào như vậy thì sẽ báo lỗi.
Ví dụ:
c) Lệnh insert(index, value) - Chèn phần tử
Lệnh insert(index, value) sẽ chèn giá trị value vào danh sách tại vị trí index và đẩy các phần tử từ vị trí này sang phải.
Ví dụ:
Lưu ý quan trọng:
- Nếu index < 0 thì chèn vào đầu danh sách
- Nếu index > len() thì chèn vào cuối danh sách
Ví dụ:
3. Tóm tắt các lệnh làm việc với danh sách
| Lệnh | Chức năng |
|---|---|
A.append(x) | Bổ sung phần tử x vào cuối danh sách A |
A.insert(k, x) | Chèn phần tử x vào vị trí k của danh sách A |
A.clear() | Xóa toàn bộ dữ liệu của danh sách A |
A.remove(x) | Xóa phần tử x từ danh sách A |
3. Luyện tập (Practice)
Bài tập thực hành
Bài tập 1:
Giả sử A = ["0", "1", "01", "10"]. Các biểu thức sau trả về giá trị đúng hay sai? a) 1 in A b) "01" in A
Bài tập 2:
Hãy giải thích ý nghĩa từ khóa in trong câu lệnh sau:
Bài tập 3:
Khi nào thì lệnh A.append(1) và A.insert(0,1) có tác dụng giống nhau?
Bài tập 4:
Danh sách A trước và sau lệnh insert() là [1, 4, 10, 0] và [1, 4, 10, 5, 0]. Lệnh đã dùng là gì?
Thực hành tại máy:
Nhập số n từ bàn phím, sau đó nhập danh sách n tên học sinh trong lớp và in ra danh sách học sinh này, mỗi tên học sinh trên một dòng. Yêu cầu danh sách được in ra theo thứ tự ngược lại với thứ tự đã nhập.
Chương trình mẫu:
4. Vận dụng (Application)
Bài tập vận dụng
Bài tập 1: Xóa các số âm
Cho trước dãy số A. Viết chương trình xóa đi các phần tử có giá trị nhỏ hơn 0 từ A.
Chương trình mẫu:
Bài tập 2: Tìm mẫu trong dãy số
Cho trước dãy số A. Viết chương trình tìm và chỉ ra vị trí đầu tiên của dãy số A mà ba số hạng liên tiếp có giá trị là 1, 2, 3. Nếu tìm thấy thì thông báo vị trí tìm thấy, nếu không thì thông báo "Không tìm thấy mẫu".
Chương trình mẫu:
Bài tập 3: Quản lý danh sách sản phẩm
Viết chương trình quản lý danh sách sản phẩm trong cửa hàng:
- Thêm sản phẩm mới
- Xóa sản phẩm theo tên
- Kiểm tra sản phẩm có tồn tại không
- In danh sách sản phẩm
Thảo luận:
- Khi nào nên dùng for...in thay vì for range(len())?
- Lỗi nào thường gặp khi dùng remove() trong vòng lặp?
- Tại sao cần dùng while thay vì for khi xóa phần tử trong danh sách?
Ghi nhớ kiến thức 🎯
- ✅ toán tử in kiểm tra phần tử trong danh sách, trả về True/False.
- ✅ for...in duyệt nhanh từng phần tử của danh sách.
- ✅ insert(k, x) chèn x vào vị trí k, đẩy các phần tử khác sang phải.
- ✅ remove(x) xóa phần tử đầu tiên có giá trị x.
- ✅ clear() xóa toàn bộ danh sách.
- ✅ append(x) thêm x vào cuối danh sách.