Mục tiêu bài học
Sau khi hoàn thành bài học này, học sinh sẽ có khả năng:
- Về kiến thức: Biết được kiểu dữ liệu danh sách (list), cách khởi tạo và truy cập từng phần tử của danh sách.
- Về kĩ năng:
- Biết và thực hiện được cách duyệt các phần tử của danh sách bằng lệnh for.
- Thực hành được một số phương thức đơn giản trên dữ liệu danh sách như thêm, xoá, thay đổi phần tử.
- Về phẩm chất: Hình thành ý thức trách nhiệm, tính cẩn thận, chăm chỉ và chuyên cần để hoàn thành nhiệm vụ học tập.
Hoạt động khởi động
Trong các bài trước, chúng ta đã làm quen với các kiểu dữ liệu cơ bản như số nguyên, số thực, xâu kí tự. Các kiểu dữ liệu này là dạng “đơn”, tức là mỗi biến chỉ lưu được một giá trị. Tuy nhiên, trong thực tế, chúng ta thường có nhu cầu lưu trữ một tập hợp nhiều giá trị, ví dụ như danh sách học sinh trong lớp, danh sách các món đồ cần mua, hay một dãy các số đo nhiệt độ. Kiểu dữ liệu danh sách (list) trong Python ra đời để giải quyết nhu cầu này.
Em hãy tìm một số ví dụ về dữ liệu kiểu danh sách thường gặp trên thực tế.
Một số ví dụ về dữ liệu kiểu danh sách trong thực tế bao gồm:
Danh sách học sinh của một lớp.
Danh sách các món hàng cần đi chợ.
Danh sách các số điện thoại trong danh bạ.
Một dãy các số liệu thống kê (ví dụ: nhiệt độ các ngày trong tháng).
1. Kiểu dữ liệu danh sách
Kiểu dữ liệu danh sách (list) trong Python được dùng để lưu trữ một dãy các giá trị.
- Khởi tạo: Danh sách được tạo bằng cách đặt các phần tử bên trong cặp dấu ngoặc vuông
[], các phần tử cách nhau bởi dấu phẩy. - Đặc điểm: Các phần tử trong một danh sách có thể có các kiểu dữ liệu khác nhau (số nguyên, số thực, xâu kí tự,…).
- Truy cập: Ta có thể truy cập từng phần tử của danh sách thông qua chỉ số (index). Chỉ số được đánh số từ 0.
- Cú pháp:
<tên_danh_sách>[<chỉ_số>]
- Cú pháp:
- Thao tác cơ bản:
- Thay đổi giá trị: Dùng lệnh gán để thay đổi giá trị của một phần tử.
Ví dụ:A[1] = "mới" - Xóa phần tử: Dùng lệnh del. Ví dụ:
del A[4] - Lấy độ dài: Dùng hàm
len(<tên_danh_sách>)để biết số lượng phần tử. - Ghép danh sách: Dùng phép toán
+để nối hai danh sách với nhau.
- Thay đổi giá trị: Dùng lệnh gán để thay đổi giá trị của một phần tử.
Cho danh sách A = [1, 0, "One", 9, 15, "Two", True, False]. Hãy cho biết giá trị các phần tử:
a) A[0]
b) A[2]
c) A[7]
d) A[len(A)]
A = [1, 0, "One", 9, 15, "Two", True, False]. Hãy cho biết giá trị các phần tử:
a) A[0] có giá trị là 1.
b) A[2] có giá trị là “One”.
c) A[7] có giá trị là False.
d) A[len(A)] sẽ gây ra lỗi chỉ số (index error).
Vì độ dài của danh sách A là 8 (len(A) bằng 8), nên chỉ số hợp lệ chạy từ 0 đến 7. A[8] nằm ngoài phạm vi hợp lệ.
Giả sử A là một danh sách các số, mỗi lệnh sau thực hiện công việc gì?
a) A = A + [10],
b) del A[0],
c) A = [100] + A,
d) A = A[1]*25
a) A = A + [10]: Bổ sung phần tử có giá trị 10 vào cuối danh sách A.
b) del A[0]: Xóa phần tử đầu tiên (có chỉ số 0) của danh sách A.
c) A = [100] + A: Thêm số 100 vào đầu danh sách A.
d) A = A[1]*25: Lệnh này sẽ gây lỗi. Phép nhân * không được định nghĩa cho một danh sách với một số nguyên theo cách này. Nếu A[1] là một số, thì A sẽ trở thành một số, không còn là danh sách. Nếu A là một biến mới thì nó sẽ được gán giá trị bằng tích của phần tử thứ hai của danh sách cũ với 25.
Lưu ý: trong trường hợp d, câu lệnh này sẽ thiết lập biến A mới, không còn là danh sách nữa mà là một giá trị số bằng tích của phần tử thứ hai của danh sách A ban đầu với 25.
2. Duyệt các phần tử của danh sách
Để xử lí tất cả các phần tử trong một danh sách, ta cần duyệt qua chúng một cách lần lượt. Cách phổ biến nhất là dùng vòng lặp for kết hợp với hàm range().
Vòng lặp for i in range(len(A)) sẽ tạo ra một biến i chạy qua các chỉ số hợp lệ của danh sách A, từ 0 đến len(A) – 1. Bên trong vòng lặp, ta có thể dùng A[i] để truy cập và xử lí từng phần tử.
Ví dụ: In ra các phần tử của danh sách
A = [1, 2, 3, 4, 5]
for i in range(len(A)):
print(A[i], end=" ")
# Kết quả: 1 2 3 4 5Giải thích cách làm việc của các đoạn mã sau đây?
a)
S = 0
for i in range(len(A)):
if A[i] > 0:
S = S + A[i]
print(S)
Đoạn lệnh này tính tổng các số dương có trong danh sách A.
b)
C = 0
for i in range(len(A)):
if A[i] > 0:
C = C + 1
print(C)
Đoạn lệnh này đếm số lượng các số dương có trong danh sách A.
Cho dãy các số nguyên A, viết chương trình in ra các số chẵn của A.
Chương trình có thể được viết như sau:
# Giả sử A đã được cho trước
A = [1, 5, 7, 4, 18, 20, 23]
# Duyệt qua từng phần tử của danh sách A
for i in range(len(A)):
# Kiểm tra nếu phần tử là số chẵn
if A[i] % 2 == 0:
print(A[i], end=" ")
# Kết quả: 4 18 203. Thêm phần tử vào danh sách
Python cung cấp các lệnh đặc biệt được thiết kế riêng cho kiểu dữ liệu danh sách, gọi là phương thức (method).
- Cú pháp:
<tên_danh_sách>.<tên_phương_thức>() - Phương thức
append(): Dùng để thêm một phần tử vào cuối danh sách.
Ví dụ:
A = [1, 2]
A.append(10)
print(A)
# Kết quả: [1, 2, 10]Sau khi thêm một phần tử vào danh sách A bằng lệnh append() thì độ dài danh sách A thay đổi như thế nào?
Độ dài của danh sách A (giá trị trả về bởi len(A)) sẽ tăng lên một đơn vị.
Danh sách A sẽ như thế nào sau các lệnh sau? A = [2, 4, 10, 1, 0]; A.append(100); del A[1]
A = [2, 4, 10, 1, 0]: A được khởi tạo.
A.append(100): Thêm 100 vào cuối, A trở thành [2, 4, 10, 1, 0, 100].
del A[1]: Xóa phần tử ở chỉ số 1 (là số 4).
Kết quả cuối cùng, A sẽ là: [2, 10, 1, 0, 100].
Luyện tập
1. Viết lệnh xoá phần tử cuối cùng của danh sách A bằng lệnh del.
Để xoá phần tử cuối cùng, chúng ta cần biết chỉ số của nó. Chỉ số của phần tử cuối cùng là len(A) – 1.
Vậy lệnh để xoá là:
del A[len(A) – 1]
2. Có thể thêm một phần tử vào đầu danh sách được không? Nếu có thì nêu cách thực hiện.
Có thể. Chúng ta có thể dùng phép toán ghép danh sách + để thực hiện việc này. Ta tạo một danh sách mới chỉ chứa phần tử cần thêm, sau đó ghép nó với danh sách A ban đầu.
Giả sử phần tử cần thêm là x, cách thực hiện như sau:
A = [x] + A
Vận dụng
Cho dãy số A. Viết chương trình tính giá trị và chỉ số của phần tử lớn nhất của A. Tương tự với bài toán tìm phần tử nhỏ nhất.
Ta có thể giả sử phần tử đầu tiên là lớn nhất, sau đó duyệt qua các phần tử còn lại. Nếu gặp phần tử nào lớn hơn giá trị lớn nhất hiện tại, ta cập nhật lại giá trị lớn nhất và chỉ số của nó.
Chương trình tìm phần tử lớn nhất:
# Giả sử A là danh sách cho trước
A = [1, 0, 10, 9, -1, 14, 7, 8]
# Giả sử phần tử đầu tiên là lớn nhất
max_value = A[0]
max_index = 0
# Duyệt từ phần tử thứ hai trở đi
for i in range(1, len(A)):
if A[i] > max_value:
max_value = A[i]
max_index = i
print("Phần tử lớn nhất là", max_value, "tại vị trí (chỉ số)", max_index)
# Kết quả: Phần tử lớn nhất là 14 tại vị trí (chỉ số) 5Tương tự cho bài toán tìm phần tử nhỏ nhất, ta chỉ cần thay đổi logic so sánh từ > thành <:
# Giả sử A là danh sách cho trước
A = [1, 0, 10, 9, -1, 14, 7, 8]
min_value = A[0]
min_index = 0
for i in range(1, len(A)):
if A[i] < min_value:
min_value = A[i]
min_index = i
print("Phần tử nhỏ nhất là", min_value, "tại vị trí (chỉ số)", min_index)
# Kết quả: Phần tử nhỏ nhất là -1 tại vị trí (chỉ số) 4Câu hỏi trắc nghiệm Tin học 10 - Bài 22 Kiểu dữ liệu danh sách
Bảng xếp hạng
| Hạng | Họ tên | Điểm số | Thời gian |
|---|---|---|---|
| 1 |
Blackbi Nghi ngờ
1 lần thi
|
10.00 / 10.00
|
1 phút 11 giây |
| 2 |
N Nghi ngờ
1 lần thi
|
10.00 / 10.00
|
1 phút 15 giây |
| 3 |
Lê Thị Diễm Quỳnh 10C3 Nghi ngờ
1 lần thi
|
10.00 / 10.00
|
1 phút 22 giây |
| 4 |
DRT-Dăng Răng To🔥 Nghi ngờ
3 lần thi
|
10.00 / 10.00
|
1 phút 41 giây |
| 5 |
Cyruss Nghi ngờ
3 lần thi
|
10.00 / 10.00
|
1 phút 51 giây |
| 6 |
Nguyễn Thị Kiều Thanh
1 lần thi
|
10.00 / 10.00
|
3 phút 1 giây |
| 7 |
Ôn
4 lần thi
|
10.00 / 10.00
|
3 phút 16 giây |
| 8 |
Nguyễn Thành Phong Phú 10C3
3 lần thi
|
10.00 / 10.00
|
15 phút 0 giây |
| 9 |
nguyễn thị bích ngọc10c3 Nghi ngờ
1 lần thi
|
10.00 / 10.00
|
15 phút 23 giây |
| 10 |
henry Nghi ngờ
1 lần thi
|
10.00 / 10.00
|
15 phút 59 giây |
| 11 |
B Nghi ngờ
5 lần thi
|
9.75 / 10.00
|
1 phút 44 giây |
| 12 |
lê thị kim hương Nghi ngờ
1 lần thi
|
9.75 / 10.00
|
16 phút 45 giây |
| 13 |
Huỳnh Thị Tuyết Như và Nguyễn Trọng Khang Nghi ngờ
1 lần thi
|
9.75 / 10.00
|
17 phút 52 giây |
| 14 |
Ẩn danh mập Nghi ngờ
1 lần thi
|
9.50 / 10.00
|
1 phút 2 giây |
| 15 |
. Nghi ngờ
6 lần thi
|
9.50 / 10.00
|
1 phút 12 giây |
| 16 |
R Nghi ngờ
1 lần thi
|
9.50 / 10.00
|
1 phút 15 giây |
| 17 |
H Nghi ngờ
1 lần thi
|
9.50 / 10.00
|
1 phút 18 giây |
| 18 |
Q Nghi ngờ
1 lần thi
|
9.50 / 10.00
|
1 phút 37 giây |
| 19 |
nguyễn tiên phát 10sê3 Nghi ngờ
1 lần thi
|
9.50 / 10.00
|
14 phút 49 giây |
| 20 |
ĐỖ THỊ HUỲNH CHÂU Nghi ngờ
1 lần thi
|
9.25 / 10.00
|
16 phút 12 giây |
| 21 |
Kenny do Nghi ngờ
1 lần thi
|
9.00 / 10.00
|
2 phút 0 giây |
| 22 |
k Nghi ngờ
1 lần thi
|
9.00 / 10.00
|
4 phút 5 giây |
| 23 |
Hwang In Yeop Nghi ngờ
1 lần thi
|
8.75 / 10.00
|
1 phút 30 giây |
| 24 |
ViNi Nghi ngờ
1 lần thi
|
8.50 / 10.00
|
15 phút 48 giây |
| 25 |
Nguyễn Minh Trí 10C2
1 lần thi
|
8.25 / 10.00
|
1 phút 50 giây |
| 26 |
ÔN 15P
1 lần thi
|
8.25 / 10.00
|
2 phút 57 giây |
| 27 |
Võ minh thư
1 lần thi
|
8.00 / 10.00
|
11 phút 5 giây |
| 28 |
on Nghi ngờ
4 lần thi
|
7.75 / 10.00
|
1 phút 20 giây |
| 29 |
Nguyễn đình Mạnh Nghi ngờ
1 lần thi
|
7.75 / 10.00
|
1 phút 37 giây |
| 30 |
Phạm Thành Long Nghi ngờ
1 lần thi
|
7.75 / 10.00
|
2 phút 19 giây |
| 31 |
Phụng và N.Ngọc
1 lần thi
|
7.75 / 10.00
|
12 phút 12 giây |
| 32 |
VO TRUONG GIANG 10C3 Nghi ngờ
1 lần thi
|
7.75 / 10.00
|
13 phút 17 giây |
| 33 |
tín le Nghi ngờ
1 lần thi
|
7.75 / 10.00
|
18 phút 35 giây |
| 34 |
Phan Thị Như Quỳnh Nghi ngờ
1 lần thi
|
7.75 / 10.00
|
18 phút 41 giây |
| 35 |
Y Nghi ngờ
1 lần thi
|
7.50 / 10.00
|
3 phút 16 giây |
| 36 |
Nguyễn Thị Minh Thư Nghi ngờ
1 lần thi
|
7.25 / 10.00
|
13 phút 24 giây |
| 37 |
.. Nghi ngờ
2 lần thi
|
7.00 / 10.00
|
1 phút 20 giây |
| 38 |
trần kim ngọc
1 lần thi
|
7.00 / 10.00
|
7 phút 56 giây |
| 39 |
Huỳnh Ngọc Yến Nhi 10C3
1 lần thi
|
6.75 / 10.00
|
3 phút 17 giây |
| 40 |
Phan bảo liêm Nghi ngờ
1 lần thi
|
6.50 / 10.00
|
2 phút 34 giây |
| 41 |
Nguyễn Thị Ngọc An Nghi ngờ
1 lần thi
|
6.50 / 10.00
|
12 phút 20 giây |
| 42 |
nguyễn hoàng phúc Nghi ngờ
1 lần thi
|
6.50 / 10.00
|
12 phút 21 giây |
| 43 |
Thái Thịnh Nghi ngờ
1 lần thi
|
6.50 / 10.00
|
14 phút 10 giây |
| 44 |
LÊ THÀNH TÍN Nghi ngờ
1 lần thi
|
6.50 / 10.00
|
19 phút 44 giây |
| 45 |
, Nghi ngờ
1 lần thi
|
6.00 / 10.00
|
2 phút 53 giây |
| 46 |
Nguyễn Thị Bích Ngọc
2 lần thi
|
5.75 / 10.00
|
44 giây |
| 47 |
Nguyễn Kim Anh
1 lần thi
|
5.75 / 10.00
|
2 phút 35 giây |
| 48 |
thúy liên Nghi ngờ
1 lần thi
|
5.75 / 10.00
|
19 phút 9 giây |
| 49 |
mina 10c3 Nghi ngờ
1 lần thi
|
5.50 / 10.00
|
13 phút 16 giây |
| 50 |
nguyễn thành thắng Nghi ngờ
1 lần thi
|
5.25 / 10.00
|
19 phút 8 giây |
| 51 |
....... Nghi ngờ
1 lần thi
|
5.00 / 10.00
|
12 phút 55 giây |
| 52 |
nguyễn trọng lực 10c3 Nghi ngờ
1 lần thi
|
5.00 / 10.00
|
15 phút 59 giây |
| 53 |
PHAN TƯỜNG GIA KHANG 10C3 Nghi ngờ
1 lần thi
|
5.00 / 10.00
|
16 phút 29 giây |
| 54 |
hj Nghi ngờ
1 lần thi
|
4.25 / 10.00
|
38 giây |
| 55 |
🌺🌻🌻🌺🥀🥀🌺🌺🌺🥀🥀🦂🦟🦟🦂🦟🌸🌼🌻🦠🦠🌺🦠🦠💐🦠💐🌼📻🥁🎧🎶🎶📻📻🎷🎙️🌋🌺🌺🌻🌺🌺 Nghi ngờ
1 lần thi
|
3.75 / 10.00
|
42 giây |
| 56 |
Yhjs
1 lần thi
|
3.75 / 10.00
|
7 phút 38 giây |
| 57 |
On t
1 lần thi
|
2.50 / 10.00
|
48 giây |
| 58 |
Abc Nghi ngờ
1 lần thi
|
2.50 / 10.00
|
4 phút 56 giây |



