Python bài 07: List: tạo, truy cập, cập nhật và slicing
- 18-10-2026
- Toanngo92
- 0 Comments
Giáo trình Python miễn phí · Chương 4/12: List, tuple và sao chép dữ liệu · Bài 07/24.
Mục lục
Mục tiêu bài học
Lưu danh sách có thứ tự, cập nhật đúng phần tử và phân biệt các thao tác thêm, xóa, sắp xếp.
List mô tả nhiều giá trị có thứ tự
List là collection mutable, tạo bằng dấu [] hoặc list(). Nó giữ thứ tự và cho phép phần tử lặp. Có thể chứa nhiều kiểu, nhưng danh sách cùng kiểu thường dễ xử lý hơn. Một danh sách tên học viên nên chứa các chuỗi thay vì trộn tên với điểm ở cùng cấp.
Truy cập bằng chỉ số, len() lấy số phần tử và in kiểm tra có phần tử. Chỉ số âm đếm từ cuối. Slicing tạo một list mới ở cấp ngoài; nó chưa sao chép sâu các đối tượng lồng bên trong.
hoc_vien = ["An", "Bình", "Chi"]
print(hoc_vien[0], hoc_vien[-1])
print(hoc_vien[1:])
hoc_vien[1] = "Bảo"
hoc_vien.append("Dũng")
hoc_vien.extend(["Hà", "Linh"])
print(hoc_vien)
print("Chi" in hoc_vien)
Kết quả:
An Chi ['Bình', 'Chi'] ['An', 'Bảo', 'Chi', 'Dũng', 'Hà', 'Linh'] True
Thêm và xóa có chủ đích
append(x) thêm một phần tử, còn extend(iterable) thêm từng phần tử của iterable. insert(i, x) chèn trước vị trí i. Nếu extend("An"), bạn sẽ thêm hai ký tự chứ không thêm một tên; đó là lý do cần hiểu đầu vào của phương thức.
pop(i) xóa và trả lại phần tử ở vị trí i; mặc định là phần tử cuối. remove(x) xóa lần xuất hiện đầu tiên của giá trị x và gây ValueError nếu không tìm thấy. del xóa theo vị trí hoặc lát cắt. clear() làm danh sách rỗng.
diem = [8, 6, 9, 6]
print(diem.pop())
diem.remove(6)
print(diem)
print(sorted(diem))
print(diem)
diem.sort()
print(diem)
Kết quả:
6 [8, 9] [8, 9] [8, 9] [8, 9]
sort() và sorted()
sort() sửa list tại chỗ và trả về None. sorted() tạo danh sách đã sắp xếp mới từ một iterable. Khi cần giữ nguyên thứ tự gốc để đối chiếu dữ liệu, dùng sorted(). Với tên tiếng Việt, sắp xếp mặc định theo Unicode chưa phải quy tắc đối chiếu ngôn ngữ tiếng Việt đầy đủ.
Trước khi lấy phần tử cuối bằng ds[-1], kiểm tra danh sách có dữ liệu nếu nguồn có thể rỗng. Một điều kiện if ds là đủ khi chỉ cần biết có phần tử hay không.
Lỗi thường gặp và lưu ý
- Không viết ds = ds.sort(); tên ds sẽ nhận None.
- Không dùng remove() để xóa theo chỉ số: remove(2) tìm giá trị 2, còn pop(2) xóa phần tử ở chỉ số 2.
Ghi nhớ
List phù hợp dữ liệu có thứ tự và cần thay đổi. Nắm rõ phương thức nào thay đổi tại chỗ, phương thức nào trả về một giá trị hoặc danh sách mới.

