Bài 19. Mảng một chiều và cách xử lí dãy số
Bài này giới thiệu cách Python lưu và xử lí một dãy nhiều giá trị cùng loại bằng list - mảng một chiều - cùng những thao tác cơ bản nhất trên một dãy số: duyệt, tính tổng, tính trung bình, đếm theo điều kiện, và tìm giá trị lớn nhất, nhỏ nhất.
- Cánh DiềuTin học 11 (Khoa học máy tính) - Chủ đề F(CS) · Bài 1. Kiểu mảng và cấu trúc mảngtr. 89
- Cánh DiềuTin học 11 (Khoa học máy tính) - Chủ đề F(CS) · Bài 3. Thực hành về tệp, mảng và danh sáchtr. 97
- Kết nối tri thứcTin học 11 (Khoa học máy tính) - Bài 17. Dữ liệu mảng một chiều và hai chiềutr. 81–85
Bắt đầu bằng một hình dung
Hãy tưởng tượng một dãy ngăn kéo dài, đặt sát nhau thành một hàng, phía trên mỗi ngăn có dán một con số thứ tự bắt đầu từ 0: ngăn số 0, ngăn số 1, ngăn số 2... Mỗi ngăn chỉ đựng đúng một giá trị, chẳng hạn một điểm số. Muốn biết giá trị ở ngăn thứ ba, bạn không cần mở lần lượt từng ngăn từ đầu - chỉ cần nhớ đúng số thứ tự rồi mở thẳng ngăn đó ra. Khi một lớp học có vài chục điểm số, hay một trạm đo ghi nhiệt độ của cả một tháng, việc gom tất cả giá trị vào một dãy ngăn kéo đánh số như vậy giúp xử lí gọn gàng hơn nhiều so với việc đặt cho mỗi giá trị một cái tên riêng. Trong lập trình, cấu trúc đóng vai trò dãy ngăn kéo ấy được gọi là mảng một chiều; trong Python, nó được cài đặt bằng kiểu dữ liệu list.
Nội dung bài học
- Danh sách: mảng một chiều trong Python
- Duyệt danh sách bằng vòng lặp for
Tóm tắt lý thuyết cần nhớ
- Khi cần lưu và xử lí nhiều giá trị cùng loại theo một thứ tự nhất định (điểm số cả lớp, nhiệt độ nhiều ngày...), Python dùng
listlàm mảng một chiều thay vì tạo nhiều biến rời rạc. - Chỉ số của
listbắt đầu từ 0; phần tử ở vị trí i được truy cập bằngten_list[i], và toàn bộ danh sách có thể được duyệt qua bằng vòng lặp for. - Tính tổng, tính trung bình và đếm theo điều kiện trên một dãy số đều theo cùng một khuôn mẫu: khởi tạo một biến trung gian bằng 0 rồi cộng dồn (hoặc cộng thêm 1) qua từng vòng lặp.
- Tìm giá trị lớn nhất, nhỏ nhất bằng vòng lặp là một thuật toán cụ thể: giữ tạm giá trị đầu tiên làm chuẩn, rồi so sánh và cập nhật dần khi duyệt qua các phần tử còn lại.
Thuật ngữ tiếng Anh trong bài
| Tiếng Anh | Đọc là | Nghĩa |
|---|---|---|
| array | ơ-RÂY | mảng Dãy các ô chứa dữ liệu cùng loại, xếp liền nhau và được đánh số - như dãy ô để giày ở cửa lớp, mỗi ô một số. |
| list | lít | danh sách Một dãy nhiều giá trị xếp hàng, giống hộp bút có nhiều ô. |
| matrix | MÂY-trix | ma trận (bảng số hàng và cột) Một bảng số xếp ngay ngắn theo hàng và cột - giống một bàn cờ ca-rô có nhiều hàng, nhiều cột. |
| index | IN-đéc | chỉ số Số thứ tự của một phần tử. |
Câu hỏi trắc nghiệm có đáp án
Mấy câu mẫu để bạn tự kiểm tra ngay. Trong ứng dụng, bài này có đủ 25 câu, chấm điểm tự động và giải thích từng câu sai.
- int
- list
- str
- bool
list lưu được nhiều giá trị theo đúng thứ tự và cho phép truy cập từng phần tử qua chỉ số nên đóng vai trò mảng một chiều; int và bool chỉ lưu đúng một giá trị, còn str dùng để lưu một chuỗi kí tự chứ không phải một dãy các giá trị độc lập như điểm số.- diem[1]
- diem[0]
- diem(0)
- diem.dau
diem[0]; diem(0) và diem.dau không phải cú pháp truy cập phần tử của list trong Python.tong = 0
for d in diem:
tong = tong + d
- 21
- 24
- 30
- 7.5
- a)Trong Python, chỉ số của phần tử đầu tiên trong một danh sách luôn là 0.Đúng
- b)Muốn duyệt qua toàn bộ phần tử của một danh sách, bắt buộc phải dùng vòng lặp while; vòng lặp for không dùng được.Sai
- c)Điểm trung bình của một dãy số bằng tổng các phần tử chia cho số lượng phần tử, tức là chia cho len() của danh sách.Đúng
- d)Hàm max() có sẵn là cách duy nhất để tìm giá trị lớn nhất trong một danh sách; hoàn toàn không thể tự viết thuật toán tìm giá trị lớn nhất bằng vòng lặp.Sai
- (a) Đúng vì Python đánh chỉ số bắt đầu từ 0.
- (b) Sai vì vòng lặp for (dạng for phần_tử in danh_sách hoặc for i in range(len(danh_sách))) là cách rất thông dụng và thuận tiện để duyệt danh sách.
- (c) Đúng, đây chính là công thức tính trung bình: tổng chia cho số lượng phần tử.
- (d) Sai vì như bài học đã trình bày, hoàn toàn có thể tự viết thuật toán tìm giá trị lớn nhất bằng vòng lặp so sánh dần từng phần tử, không phụ thuộc vào hàm max() có sẵn.
Thử ngay: minh hoạ từng bước
Bấm từng bước để tự xem cơ chế hoạt động, hoặc bấm “Tự chạy” cho nó tiến mỗi giây một lần. Đổi được dữ liệu đầu vào - không cần đăng nhập.
Học trọn bài này trong ứng dụng
Bài giảng đầy đủ, 25 câu luyện tập chấm tự động, thi thử đúng cấu trúc đề tốt nghiệp (24 trắc nghiệm + 4 Đúng/Sai), bài thực hành máy tự chấm và gia sư AI giải thích chỗ sai.
Phần học miễn phí, không cần tạo tài khoản.
Bài liên quan - Lập trình, Thuật toán & CTDL (KHMT)
Cùng mạch kiến thức với bài này, học nối tiếp cho chắc phần lí thuyết.