BÀI 23: MỘT SỐ LỆNH LÀM VIỆC VỚI DỮ LIỆU DANH SÁCH

Bài 23: Một số lệnh làm việc với dữ liệu danh sách
Slide 1/8
🔧📋

BÀI 23: MỘT SỐ LỆNH LÀM VIỆC VỚI DỮ LIỆU DANH SÁCH

"Toán tử in và các phương thức thao tác danh sách"

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

🎯 SAU BÀI NÀY EM SẼ

  • Biết cách duyệt danh sách bằng toán tử in

    Sử dụng toán tử in để kiểm tra phần tử và duyệt danh sách một cách hiệu quả.

  • Biết và thực hiện được một số phương thức thường dùng với danh sách

    Làm quen với các phương thức clear(), remove(), insert() và cách sử dụng chúng.

Slide 3/8

🔍 1. DUYỆT DANH SÁCH VỚI TOÁN TỬ IN

📌 Hoạt động 1: Sử dụng toán tử in với danh sách

Khái niệm:
Toán tử in được sử dụng để kiểm tra một giá trị có nằm trong danh sách hay không.

📝 Ví dụ 1: Dùng toán tử in để kiểm tra một giá trị có nằm trong danh sách hay không

>>> A = [1, 2, 3, 4, 5]
>>> 2 in A
True
Giải thích: Số nguyên 2 nằm trong dãy A, kết quả trả lại True.
>>> 10 in A
False
Giải thích: Số 10 không nằm trong dãy A, kết quả trả lại False.

📌 Cú pháp:

<giá trị> in <danh sách>

Câu lệnh dùng toán tử in để kiểm tra <giá trị> có trong <danh sách> không, nếu có thì trả lại True, nếu không thì trả về False.

Slide 4/8

🔄 DUYỆT DANH SÁCH VỚI TOÁN TỬ IN (tiếp)

📝 Ví dụ 2: Sử dụng toán tử in để duyệt từng phần tử của danh sách

>>> A = [10, 11, 12, 13, 14, 15]
>>> for k in A:
print(k, end = " ")
10 11 12 13 14 15
Giải thích:
• Vòng lặp for k in A sẽ lần lượt gán từng phần tử của danh sách A cho biến k
• Không cần sử dụng range() hoặc chỉ số để truy cập
• Cách này đơn giản và d����� đọc hơn so với for i in range(len(A))

🔖 GHI NHỚ

📌 Toán tử in dùng để kiểm tra một phần tử có nằm trong danh sách đã cho không. Kết quả trả lại True (Đúng) hoặc False (Sai).

<giá trị> in <danh sách>

📌 Có thể duyệt nhanh từng phần tử của danh sách bằng toán tử in và lệnh for mà không cần sử dụng lệnh range().

✏️ CỦNG CỐ PHẦN 1

📝 Câu 1. Giả sử A = ["0", "1", "01", "10"]. Các biểu thức sau trả về giá trị đúng hay sai?

a) 1 in A
b) "01" in A

📝 Câu 2. Hãy giải thích ý nghĩa từ khóa in trong câu lệnh sau:

for i in range(10):
<các lệnh>
Slide 5/8

🗑️ 2. MỘT SỐ LỆNH LÀM VIỆC VỚI DANH SÁCH

📌 Hoạt động 2: Tìm hiểu một số lệnh làm việc với danh sách

Mục tiêu: Quan sát ví dụ sau để tìm hiểu một số lệnh làm việc với dữ liệu kiểu danh sách.

📝 Ví dụ 1: Lệnh clear() xóa toàn bộ một danh sách

>>> A = [1, 2, 3, 4, 5]
>>> A.clear()
>>> A
[]
Giải thích: Sau khi thực hiện lệnh clear(), danh sách gốc trở thành rỗng.

📝 Ví dụ 2: Lệnh remove(value) sẽ xóa phần tử đầu tiên của danh sách có giá trị value

💡 Lưu ý: Nếu không có phần tử nào như vậy thì sẽ báo lỗi.
>>> A = [1, 2, 3, 4, 5]
>>> A.remove(1)
>>> A
[2, 3, 4, 5]
Giải thích: Lệnh remove() có chức năng xóa một phần tử có giá trị cho trước.
>>> A.remove(10)
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
A.remove(10)
ValueError: list.remove(x): x not in list
Cảnh báo: Lệnh báo lỗi nếu giá trị không có trong danh sách.
Slide 6/8

➕ PHƯƠNG THỨC INSERT()

📝 Ví dụ 3: Lệnh insert có chức năng chèn phần tử vào danh sách tại chỉ số cho trước

>>> A = [1, 2, 6, 10]
>>> A.insert(2, 5)
>>> A
[1, 2, 5, 6, 10]
Giải thích: Lệnh insert() có hai tham số cần nhập: vị trí cần chèn và giá trị được chèn. Lệnh insert(2, 5) sẽ chèn số 5 tại chỉ số 2.

📌 Cơ chế hoạt động:

Lệnh insert(index, value) sẽ chèn giá trị value vào danh sách tại vị trí index và đẩy các phần tử từ vị trí này sang phải.

⚠️ Chú ý: Nếu k nằm ngoài phạm vi chỉ số của danh sách thì lệnh vẫn có tác dụng:
• Nếu k < 0 thì chèn vào đầu danh sách
• Nếu k > len() thì chèn vào cuối danh sách

📊 Ví dụ minh họa với chỉ số ngoài phạm vi:

>>> A = []
>>> A.insert(-10, 1) # Lệnh này chèn số 1 vào đầu danh sách A
>>> A.insert(100, 2) # Lệnh này chèn số 2 vào cuối danh sách A
>>> A
[1, 2]
Slide 7/8

📚 TỔNG HỢP CÁC PHƯƠNG THỨC

🔖 GHI NHỚ

Một số lệnh làm việc với dữ liệu danh sách:

A.append(x)

Bổ sung phần tử x vào cuối danh sách A.

📍 A.insert(k, x)

Chèn phần tử x vào vị trí k của danh sách A.

🗑️ A.clear()

Xóa toàn bộ dữ liệu của danh sách.

A.remove(x)

Xóa phần tử đầu tiên có giá trị x trong danh sách.

✏️ CỦNG CỐ PHẦN 2

📝 Câu 1. Khi nào thì lệnh A.append(1)A.insert(0, 1) có tác dụng giống nhau?

📝 Câu 2. Danh sách A trước và sau lệnh insert() là [1, 4, 10, 0][1, 4, 10, 5, 0]. Lệnh đã dùng là gì?

Slide 8/12

💻 THỰC HÀNH

Các lệnh làm việc với dữ liệu kiểu 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 học sinh trong lớp và in ra danh sách học sinh này, mỗi tên học sinh trên một dòng. Yêu cầu danh sách được in ra theo thứ tự ngược lại với thứ tự đã nhập.

💡 Hướng dẫn:
Chương trình sẽ yêu cầu nhập số tự nhiên n, sau đó sẽ lần lượt yêu cầu nhập n tên học sinh. Tuy nhiên do yêu cầu in danh sách học sinh theo thứ tự ngược lại so với thứ tự nhập nên cần dùng lệnh insert() để chèn tên học sinh được nhập vào đầu danh sách.

📄 Chương trình có thể như sau:

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.insert(0, name) # Chèn vào đầu danh sách
print("Danh sách học sinh đã nhập:")
for name in dsLop:
print(name)
🔍 Giải thích:
dsLop.insert(0, name) chèn tên học sinh vào vị trí 0 (đầu danh sách)
• Mỗi lần chèn, các phần tử cũ bị đẩy sang phải
• Kết quả: học sinh nhập sau cùng sẽ ở vị trí đầu tiên khi in ra
Slide 9/12

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

📝 Nhiệm vụ 2

Cho trước dãy số A. Viết chương trình xóa đi các phần tử có giá trị nhỏ hơn 0 từ A.

💡 Hướng dẫn:
Duyệt từng phần tử của dãy số A, kiểm tra nếu phần tử này nhỏ hơn 0 thì xóa đi.

📄 Chương trình có thể như sau:

A = [0, 1, -3, -10, 5, 9, -20, 55]
i = 0
while i < len(A):
if A[i] < 0:
A.remove(A[i]) # Xóa phần tử âm
else:
i = i + 1 # Chỉ tăng i nếu không xóa
print(A)
🔍 Phân tích:
Input: A = [0, 1, -3, -10, 5, 9, -20, 55]
Output: [0, 1, 5, 9, 55]
• Các số âm (-3, -10, -20) đã bị xóa
⚠️ Lưu ý quan trọng:
• Không dùng vòng lặp for i in range(len(A)) vì khi xóa phần tử, độ dài danh sách thay đổi
• Chỉ tăng i khi KHÔNG xóa phần tử
• Nếu xóa phần tử, các phần tử sau tự động dịch sang trái, không cần tăng i
Slide 10/12

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

📝 Nhiệm vụ 3

Cho trước dãy số A. Viết chương trình tìm và chỉ ra vị trí đầu tiên của dãy số A mà ba số hạng liên tiếp có giá trị là 1, 2, 3. Nếu tìm thấy thì thông báo vị trí tìm thấy, nếu không thì thông báo "Không tìm thấy mẫu".

💡 Hướng dẫn:
Soạn thảo chương trình sau rồi thực hiện và kiểm tra tính đúng đắn của chương trình.

📄 Chương trình có thể như sau:

A = [0, 4, 0, 1, 2, 3, 8, 9, 0, 1, 2, 3, 17, -16, 0, 1, 2]
p = [1, 2, 3] # Mẫu cần tìm
pkq = -1 # Phần kết quả, -1 nghĩa là chưa tìm thấy
i = 0
while i < len(A) - 2 and pkq == -1:
if A[i] == p[0] and A[i+1] == p[1] and A[i+2] == p[2]:
pkq = i # Lưu vị trí tìm thấy
else:
i = i + 1
if pkq >= 0:
print("Tìm thấy mẫu", p, "tại vị trí", pkq)
else:
print("Không tìm thấy mẫu", p)
🔍 Giải thích:
• Vòng lặp dừng ở len(A) - 2 để tránh lỗi khi kiểm tra A[i+2]
• Kiểm tra ba phần tử liên tiếp: A[i], A[i+1], A[i+2]
• Với dãy trên, mẫu [1, 2, 3] xuất hiện đầu tiên tại vị trí 3
Slide 11/12

✏️ LUYỆN TẬP VÀ VẬN DỤNG

📝 LUYỆN TẬP

📌 Câu 1. Cho dãy số [1, 2, 2, 3, 4, 5, 5]. Viết lệnh thực hiện:

a) Chèn số 1 vào ngay sau giá trị 1 của dãy.
b) Chèn số 3 và số 4 vào danh sách để dãy có số 3 và số 4 liền nhau hai lần.

📌 Câu 2. Cho trước dãy số A. Viết chương trình thực hiện công việc sau:

• Xóa đi một phần tử ở chính giữa dãy nếu số phần tử của dãy là số lẻ.
• Xóa đi hai phần tử ở chính giữa của dãy nếu số phần tử của dãy là số chẵn.

🚀 VẬN DỤNG

📌 Câu 1

Viết chương trình nhập n từ bàn phím, tạo và in ra màn hình dãy số A bao gồm n số tự nhiên chẵn đầu tiên.

📌 Câu 2. Dãy số Fibonacci

Dãy số Fibonacci được xác định như sau:
• F₀ = 0
• F₁ = 1
• Fₙ = Fₙ₋₁ + Fₙ₋₂ (với n ≥ 2)

Viết chương trình nhập n từ bàn phím, tạo và in ra màn hình dãy số A bao gồm n số hạng đầu của dãy Fibonacci.

Slide 12/12
🎉✨

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

Bài 23: Một số lệnh làm việc với dữ liệu danh sách

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

✅ Toán tử in: Kiểm tra phần tử và duyệt danh sách
✅ append(x): Thêm phần tử vào cuối danh sách
✅ insert(k, x): Chèn phần tử tại vị trí k
✅ remove(x): Xóa phần tử đầu tiên có giá trị x
✅ clear(): Xóa toàn bộ danh sách

🎯 Đã hoàn thành

✓ Lý thuyết
✓ Thực hành
✓ Luyện tập
✓ Vận dụng
Lên đầu trang