Mỗi hàng là một bản ghi nhỏ
Một bộ dữ liệu giả cho nhóm học tập có thể là:
```python
ket_qua = [["Lan", 8.0], ["Minh", 7.5], ["Vy", 9.0]]
```
`ket_qua[1]` trả cả hàng `["Minh", 7.5]`. Muốn lấy riêng điểm của hàng đó, thêm chỉ số thứ hai: `ket_qua[1][1]` là 7.5. Chỉ số đầu chọn **hàng**; chỉ số sau chọn **mục trong hàng**. Hàng này gồm tên và điểm thuộc hai kiểu khác nhau, nên đây là danh sách chứa các bản ghi nhỏ, chưa phải một ma trận số đồng nhất.
Duyệt và tách đúng hai mục
Nếu mỗi hàng đều có **đúng hai** phần tử, có thể viết:
```python
for ten, diem in ket_qua:
print(ten, diem)
```
Mỗi lượt, Python lấy một hàng rồi gán mục thứ nhất cho `ten`, mục thứ hai cho `diem`. Kết quả lần lượt là `Lan 8.0`, `Minh 7.5`, `Vy 9.0`. Nếu một hàng thiếu điểm hoặc chứa ba mục, cách tách hai biến này sẽ báo lỗi; cần kiểm cấu trúc dữ liệu trước khi duyệt.
Bài luyện
Với `d = [["Lan", 8.0], ["Minh", 7.5]]`, `d[1][0]` là gì?
Đây là d[0][0].
Đây là d[0][1].
Chọn hàng 1 rồi mục 0.
Đây là d[1][1].
Lời giải
d[1] là `["Minh", 7.5]`; lấy mục 0 của hàng đó được `"Minh"`.
Bài luyện
Vì sao dữ liệu `[["Lan", 8.0], ["Minh", 7.5]]` được gọi là danh sách chứa danh sách?
Hai hàng bên trong đều là list.
Các tên là chuỗi, điểm là số.
Chỉ số Python bắt đầu từ 0.
Hai tên trong ví dụ khác nhau.
Lời giải
Danh sách ngoài có hai hàng; mỗi hàng lại là một danh sách gồm tên và điểm.
Bài luyện
Đoạn `for ten, diem in d:` cần điều kiện nào để tách hàng thành công?
Hai biến nhận đúng hai mục từ từng hàng.
Điểm thực như 8.0 vẫn tách được.
Tên không cần trùng.
Số hàng ngoài có thể khác hai.
Lời giải
Mỗi lần lặp tách một hàng cho hai biến; hàng phải có đúng hai mục, dù danh sách ngoài có bao nhiêu hàng.
Đang học