BÀI 22: KIỂU DỮ LIỆU DANH SÁCH TRONG PYTHON

Bài 22: Kiểu dữ liệu danh sách trong Python
Slide 1/11
📋🐍

BÀI 22: KIỂU DỮ LIỆU DANH SÁCH TRONG PYTHON

"List - Lưu trữ nhiều giá trị trong một biến"

Tin học 10 | Lập trình cơ bản với Python
Slide 2/11

🎯 A. YÊU CẦU CẦN ĐẠT

  • Hiểu và sử dụng được kiểu dữ liệu danh sách (list) trong Python

    Nắm được khái niệm, đặc điểm và cách sử dụng list để lưu trữ dữ liệu.

  • Biết cách khởi tạo, truy cập và thay đổi các phần tử trong danh sách

    Thực hành tạo list, truy cập theo chỉ số và cập nhật giá trị.

  • Thực hành dùng vòng lặp for để duyệt danh sách

    Sử dụng for để lặp qua từng phần tử trong danh sách.

  • Sử dụng các phương thức quan trọng của danh sách

    Làm quen với append(), del(), len() và các phương thức khác.

Slide 3/11

📋 B.1. KIỂU DỮ LIỆU DANH SÁCH LÀ GÌ?

Định nghĩa:
Danh sách (list) là kiểu dữ liệu dùng để lưu trữ nhiều giá trị trong Python.

📌 Cú pháp khởi tạo danh sách:

<tên list> = [<v₁>, <v₂>, ..., <vₙ>]

Trong đó các giá trị <v> có thể có kiểu dữ liệu khác nhau (số nguyên, số thực, xâu ký tự...). Ta có thể truy cập từng phần tử của danh sách thông qua chỉ số. Chỉ số bắt đầu từ 0.

📦
Lưu nhiều giá trị
Một biến list có thể chứa nhiều phần tử khác nhau.
🎭
Kiểu dữ liệu đa dạng
Các phần tử có thể có kiểu dữ liệu khác nhau (số, chuỗi, bool...).
0️⃣
Chỉ số bắt đầu từ 0
Phần tử đầu tiên có chỉ số 0, thứ hai có chỉ số 1, ...

📝 Ví dụ 1: Tạo danh sách

A = [1, 2, 3, 4, 5]
B = [1.5, 2, "Python", "List", 0]
print(A[0]) # 1
print(B[2]) # "Python"

🔍 Minh họa danh sách A = [1, 2, 3, 4, 5]

0
1
1
2
2
3
3
4
4
5
Slide 4/11

🔧 B.2. THAO TÁC VỚI DANH SÁCH

a) Tạo danh sách rỗng

A = [] # Tạo danh sách rỗng (không có phần tử)
print(len(A)) # 0
Giải thích:
• Danh sách rỗng [] không chứa phần tử nào
• Thường dùng để thêm phần tử sau bằng append()

a.1) Lệnh len() - Đếm số phần tử

A = []
print(len(A)) # 0 - danh sách rỗng

B = [1, 2, 3, 4, 5]
print(len(B)) # 5 - có 5 phần tử

C = ["Python", "Java", "C++"]
print(len(C)) # 3 - có 3 phần tử
📏 Công dụng của len():

Đếm số phần tử: len(A) trả về tổng số phần tử trong danh sách A
Kiểm tra rỗng: len(A) == 0 nghĩa là danh sách rỗng
Dùng với range(): range(len(A)) để duyệt qua tất cả chỉ số
Tính toán: Dùng trong các công thức như trung bình = sum(A) / len(A)

b) Thay đổi giá trị trong danh sách

A = [1, 2, 3, 4, 5]
A[1] = "One" # Thay đổi giá trị tại chỉ số 1
print(A) # [1, 'One', 3, 4, 5]
Giải thích: Phần tử tại vị trí 1 (giá trị 2) được thay thế bằng chuỗi "One".

c) Xóa phần tử trong danh sách

del A[4] # Xóa phần tử tại vị trí 4
print(A) # [1, 'One', 3, 4]
Lưu ý: Khi xóa một phần tử, các phần tử phía sau sẽ dịch chuyển về phía trước.

d) Ghép danh sách

C = [1, 2] + [3, 4, 5, 6]
print(C) # [1, 2, 3, 4, 5, 6]
Giải thích: Toán tử + được sử dụng để nối hai danh sách thành một.

🎮 Thử nghiệm thay đổi danh sách

Nhấn nút để xem các thao tác với danh sách...

📌 Kiến thức cần nhớ: Truy cập phần tử

Cú pháp truy cập phần tử:

<danh sách>[<chỉ số>]

Chỉ số của danh sách bắt đầu từ 0 đến len() - 1

len() là lệnh tính độ dài danh sách

⚠️ Lưu ý: Nếu danh sách có n phần tử, chỉ số hợp lệ là từ 0 đến n-1. Truy cập A[n] sẽ gây lỗi!

✏️ BÀI TẬP LUYỆN TẬP

📝 Câu 1. 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)] = ?

📝 Câu 2. 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
Slide 5/11

🔄 B.3. DUYỆT DANH SÁCH BẰNG VÒNG LẶP FOR

Duyệt danh sách: Là quá trình lặp qua từng phần tử trong danh sách và thực hiện thao tác.

📝 Ví dụ 2: In ra tất cả các phần tử trong danh sách

A = [1, 2, 3, 4, 5]
for i in range(len(A)):
print(A[i], end=" ") # 1 2 3 4 5
Giải thích:
len(A) trả về số phần tử trong danh sách (5)
range(len(A)) tạo dãy số từ 0 đến 4
• Vòng lặp duyệt qua các chỉ số và in ra giá trị tương ứng

📝 Ví dụ 3: In một phần danh sách

B = [3, 2, 1, 5, 6, 10, 7, 12, 18]
for i in range(2, 5):
print(B[i], end=" ") # 1 5 6

🔍 Duyệt từ chỉ số 2 đến 4

0
3
1
2
2
1
3
5
4
6
5
10
Giải thích: range(2, 5) tạo dãy số từ 2 đến 4 (không bao gồm 5), nên in ra B[2], B[3], B[4].

✏️ BÀI TẬP LUYỆN TẬP

📝 Câu 1. Giải thích các lệnh ở mỗi câu sau thực hiện công việc gì?

a) Đoạn code thứ nhất:
>>> S = 0
>>> for i in range(len(A)):
if A[i] > 0:
S = S + A[i]
>>> print(S)
b) Đoạn code thứ hai:
>>> C = 0
>>> for i in range(len(A)):
if A[i] > 0:
C = C + 1
>>> print(C)

📝 Câu 2. 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.

💡 Gợi ý:
• Số chẵn là số chia hết cho 2 (A[i] % 2 == 0)
• Duyệt qua từng phần tử và kiểm tra điều kiện
• In ra các số thỏa mãn điều kiện
Slide 6/11

➕ B.4. THÊM PHẦN TỬ VÀO DANH SÁCH

Phương thức append(): Thêm một phần tử vào cuối danh sách.

📌 Cú pháp các lệnh:

<danh sách>.<phương thức>

Lệnh thêm phần tử vào cuối danh sách là <danh sách>.append()

📝 Ví dụ 4: Thêm phần tử vào danh sách

A = [1, 2]
A.append(10)
print(A) # [1, 2, 10]
Giải thích: Giá trị 10 được thêm vào cuối danh sách A.

📝 Ví dụ 5: Kết hợp del() và append()

A = [2, 4, 10, 1, 0]
A.append(100)
del A[1] # Xóa phần tử tại vị trí 1
print(A) # [2, 10, 1, 0, 100]

🔍 Quá trình biến đổi danh sách

Bước 1: Danh sách ban đầu

0
2
1
4
2
10
3
1
4
0

Bước 2: Sau append(100)

0
2
1
4
2
10
3
1
4
0
5
100

Bước 3: Sau del A[1]

0
2
1
10
2
1
3
0
4
100

✏️ BÀI TẬP VỀ APPEND() VÀ DEL()

📝 Câu 1. 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?

📝 Câu 2. 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]
Slide 7/11

🛠️ CÁC PHƯƠNG THỨC QUAN TRỌNG CỦA DANH SÁCH

📏
len()
Đếm số phần tử
A = [1, 2, 3, 4, 5]
print(len(A))
# Kết quả: 5
💡 Ghi nhớ: len(A) cho biết A có bao nhiêu phần tử
append()
Thêm vào cuối
A = [1, 2]
A.append(3)
print(A)
# Kết quả: [1, 2, 3]
💡 Ghi nhớ: append() thêm phần tử vào vị trí cuối cùng
🗑️
del
Xóa phần tử
A = [1, 2, 3]
del A[1]
print(A)
# Kết quả: [1, 3]
💡 Ghi nhớ: del A[i] xóa phần tử tại vị trí i
⚡ Lưu ý quan trọng:
len()hàm → Viết: len(A)
append()phương thức → Viết: A.append(3)
deltừ khóa → Viết: del A[1]
Slide 8/11

💻 C. THỰC HÀNH

Khởi tạo, nhập dữ liệu, thêm phần tử cho danh sách

📝 Nhiệm vụ 1: Nhập số n từ bàn phím, sau đó nhập danh sách n tên các bạn lớp em và in ra danh sách các tên đó, mỗi tên trên một dòng.

Hướng dẫn:
• Chương trình yêu cầu nhập số tự nhiên n, sau đó nhập từng tên trong danh sách
• Dùng phương thức append() để đưa dần vào danh sách
Chú ý: Vì vùng giá trị của lệnh range(n) bắt đầu từ 0 nên trong thông báo nhập cần viết là str(i+1) để bắt đầu từ 1

📋 Chương trình mẫu:

dsLop = []
n = int(input("Nhập số học sinh trong lớp: "))
for i in range(n):
name = input("Nhập họ tên học sinh thứ " + str(i+1) + ": ")
dsLop.append(name)
print("Danh sách học sinh đã nhập:")
for i in range(len(dsLop)):
print(dsLop[i])

💡 Giải thích từng bước:

Bước 1: Tạo danh sách rỗng dsLop = []

Bước 2: Nhập số học sinh n

Bước 3: Vòng lặp từ 0 đến n-1, nhập từng tên

Bước 4: Dùng append() thêm tên vào danh sách

Bước 5: In từng phần tử trong danh sách

🔑 Điểm quan trọng:
str(i+1) chuyển chỉ số từ 0 thành 1, 2, 3...
len(dsLop) trả về số phần tử trong danh sách
Slide 9/11

💻 THỰC HÀNH (tiếp)

📝 Nhiệm vụ 2: Nhập một dãy số từ bàn phím. Tính tổng, trung bình của dãy và in dãy số trên một hàng ngang.

Hướng dẫn:
• Tương tự nhiệm vụ 1, chỉ khác là nhập số nguyên nên dùng lệnh int() để chuyển đổi dữ liệu
• Tính tổng trong quá trình nhập để tối ưu chương trình

📋 Chương trình mẫu:

A = []
T = 0
n = int(input("Nhập số tự nhiên n: "))
for i in range(n):
num = int(input("Nhập số thứ " + str(i+1) + ": "))
T = T + num
A.append(num)
print("Dãy số đã nhập:")
for i in range(n):
print(A[i], end = " ")
print()
print("Tổng:", T)
print("Trung bình:", T/n)

💡 Giải thích từng bước:

Bước 1: Khởi tạo danh sách rỗng A = [] và biến tổng T = 0

Bước 2: Nhập số phần tử n

Bước 3: Vòng lặp nhập từng số, cộng vào tổng và thêm vào danh sách

Bước 4: In dãy số trên một hàng (dùng end=" ")

Bước 5: In tổng và trung bình

🔑 Điểm quan trọng:
T = T + num tích lũy tổng trong quá trình nhập
end=" " in các số trên cùng một hàng
print() xuống dòng sau khi in xong dãy số
• Trung bình = Tổng / Số phần tử
Slide 10/11

✏️ D. LUYỆN TẬP

📝 Câu 1. Viết lệnh xóa phần tử cuối cùng của danh sách A bằng lệnh del.

📝 Câu 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.

🎯 E. VẬN DỤNG

📝 Bài toán: Cho dãy số A. Viết chương trình tìm 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.

💡 Gợi ý:
• Khởi tạo giá trị max = A[0] và vị trí vtMax = 0
• Duyệt qua từng phần tử, so sánh với max
• Nếu A[i] > max, cập nhật max = A[i] và vtMax = i
• Tương tự cho bài toán tìm min
Slide 11/11
🎉✨

HOÀN THÀNH BÀI HỌC!

Bài 22: Kiểu dữ liệu danh sách trong Python

📚 Tóm tắt kiến thức:

✅ Danh sách (list): Lưu trữ nhiều giá trị, chỉ số bắt đầu từ 0
✅ Truy cập: A[i] truy cập phần tử tại vị trí i
✅ Phương thức: len(), append(), del
✅ Duyệt danh sách: Dùng vòng lặp for i in range(len(A))
Lên đầu trang