Tin học 10 – Bài 23. Một số lệnh làm việc với dữ liệu danh sách

1. Duyệt danh sách với toán tử in

a. Kiểm tra sự tồn tại

Sử dụng toán tử in với danh sách để kiểm tra xem một giá trị có nằm trong danh sách hay không.

Cú pháp: <giá trị> in <danh sách>

Python
A = [1, 2, 3, 4, 5]
print(2 in A)  # Kết quả: True
print(10 in A) # Kết quả: False

b. Duyệt danh sách

Duyệt nhanh từng phần tử của danh sách bằng toán tử in và vòng lặp for mà không cần dùng range().

Python
A = [10, 11, 12, 13, 14, 15]
for k in A:
    print(k, end=" ") # Kết quả: 10 11 12 13 14 15

Câu hỏi và bài tập củng cố:

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
Trả lời: Sai. Vì 1 là số nguyên, còn các phần tử trong A là chuỗi.

b. "01" in A
Trả lời: Đúng. Chuỗi “01” có trong danh sách A.

Hãy giải thích ý nghĩa từ khoá in trong câu lệnh sau: for i in range(10)

Trong câu lệnh này, in không phải là toán tử in dùng cho danh sách. Ở đây, nó là một phần của cú pháp vòng lặp for, cho phép i lần lượt nhận các giá trị trong dãy số được tạo bởi range(10) (tức là từ 0 đến 9).


2. Một số lệnh làm việc với danh sách

LệnhMô tả
A.append(x)Thêm 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.
A.remove(x)Xóa phần tử x đầu tiên từ danh sách A.

Ví dụ:

  • clear(): Xóa toàn bộ danh sách.
Python
A = [1, 2, 3, 4, 5]
A.clear()
print(A)  # Kết quả: []
  • remove(value): Xóa phần tử đầu tiên có giá trị value. Báo lỗi nếu không tìm thấy value.
Python
A = [1, 2, 3, 4, 5]
A.remove(1)
print(A)  # Kết quả: [2, 3, 4, 5]

# A.remove(10)  # Gây lỗi vì 10 không có trong danh sách
  • insert(index, value): Chèn value vào vị trí index.
Python
A = [1, 2, 6, 10]
A.insert(2, 5)
print(A)  # Kết quả: [1, 2, 5, 6, 10]

Ghi chú: Nếu index nằm ngoài phạm vi, phần tử sẽ được chèn vào đầu (nếu index < 0) hoặc cuối (nếu index > len(A)) danh sách.


Câu hỏi và bài tập củng cố

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

Hai lệnh này có tác dụng giống nhau khi danh sách A đang rỗng.

’2.

[1, 4, 10, 5, 0]. Lệnh đã dùng là gì?’]
Lệnh đã dùng là A.insert(3, 5). Chèn thêm một phần tử giá trị là 5 vào vị trí 3


Thực hành

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.

Python
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)
print("Danh sách học sinh đã nhập:")
for name in dsLop:
    print(name)

Nhiệm vụ 2

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

Python
A = [0, 1, -3, -10, 5, 9, -20, 55]
i = 0
while i < len(A):
    if A[i] < 0:
        A.remove(A[i])
    else:
        i = i + 1
print(A)

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”.

Python
A = [0, 4, 0, 1, 2, 3, 8, 9, 0, 1, 2, 3, 17, -16, 0, 1, 2]
p = [1, 2, 3]
pkq = -1
i = 0
while i < len(A) - 2 and pkq == -1:
    if A[i:i+3] == p:  #Sử dụng slice để so sánh
        pkq = i
    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)

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.

A.insert(1, 1)

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.

A.insert(4, 3)
A.insert(5, 4)

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:

a. Xoá đ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ẻ.

Python
if len(A) % 2 == 1:
    del A[len(A) // 2]

b. Xoá đ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

Python
if len(A) % 2 == 0:
    del A[len(A) // 2 - 1: len(A) // 2 + 1]

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.

Python
n = int(input("Nhập số tự nhiên n: "))
A = []
for i in range(n):
    A.append(2 * i)
print(A)

Câu 2.

Dãy số Fibonacci được xác định như sau:

  • F0 = 0
  • F1 = 1
  • Fn = Fn-1 + Fn-2 (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.

Python
n = int(input("Nhập số tự nhiên n > 1: "))
A = [0, 1]
for k in range(2, n):
    A.append(A[k-1] + A[k-2])
print(A)

Câu hỏi trắc nghiệm dạng D1 và D2 Tin học 10 Bài 23: Một số lệnh làm việc với dữ liệu danh sách

Thời gian làm bài: 30 phút
Đáp án chỉ hiển thị sau khi hoàn thành bài làm
Câu hỏi sẽ được hiển thị ngẫu nhiên
Vui lòng nhập họ và tên để bắt đầu làm bài

NB

Toán tử nào sau đây được sử dụng để kiểm tra một giá trị có nằm trong một danh sách hay không?

NB

Lệnh nào sau đây dùng để xóa toàn bộ các phần tử của một danh sách?

”TH”

”Kết

là gì?” a=”5″ b=”True” c=”False” d=”Lỗi” correct=”c”]

TH

Lệnh A.insert(2, 10) sẽ thực hiện thao tác gì trên danh sách A?

NB

Lệnh nào sau đây thêm một phần tử vào cuối danh sách?

TH

Điều gì xảy ra nếu bạn cố gắng sử dụng A.remove(x) khi x không có trong danh sách A?

”VD”

”Cho

. Sau khi thực hiện lệnh A.insert(-10, 0), danh sách A sẽ như thế nào?” a=”[0, 1, 2]” b=”[1, 0, 2]” c=”[1, 2, 0]” d=”Lỗi” correct=”a”]

”TH”

”Trong


for k in A:
    print(k, end=" ")
Đoạn code trên sẽ in ra kết quả gì?” a=”1 2 3 4 5″ b=”[1, 2, 3, 4, 5]” c=”12345″ d=”Lỗi” correct=”a”]

NB

Chức năng của lệnh A.clear() là gì?

”VD”

”Cho

. Sau khi thực hiện lệnh A.remove(2), danh sách A sẽ như thế nào?” a=”[1, 2]” b=”[1]” c=”[1, 2, 2]” d=”[2, 2]” correct=”a”]

TH

Điểm khác biệt chính giữa A.append(x)A.insert(0, x) là gì?

”VD”

”Cho


A.insert(100, 1)
print(A)
Kết quả in ra màn hình sẽ là gì?” a=”[1]” b=”[]” c=”Lỗi” d=”[100][1]” correct=”a”]

NB

Trong Python, danh sách (list) là kiểu dữ liệu gì?

TH

Đoạn code sau dùng để làm gì?
for i in range(10):
    # Các lệnh

”VD”

”Cho

. Giá trị của biểu thức "1" in A là gì?” a=”True” b=”False” c=”Lỗi” d=”"1"” correct=”a”]

TH

Ý nghĩa của tham số end =

”VD”

”Cho

. Hỏi sau khi thực hiện A.insert(len(A), 5), thì A bằng bao nhiêu?” a=”[1, 2]” b=”[1, 2, 5]” c=”[5, 1, 2]” d=”[1, 5, 2]” correct=”b”]

NB

Phương thức nào sau đây không dùng để làm việc với danh sách trong Python?

TH

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

”VD”

”Cho


# Lệnh chèn
print(A) # Kết quả: [1, 4, 10, 5, 0]
Lệnh nào sau đây có thể là “# Lệnh chèn” để đoạn code trên in ra kết quả như trên?” a=”A.append(5)” b=”A.insert(3, 5)” c=”A.insert(4, 5)” d=”A.insert(len(A)-1, 5)” correct=”b”]

Một bạn học sinh muốn tạo một danh sách các số chẵn từ 2 đến 10. Bạn ấy có thể sử dụng các lệnh khác nhau của Python để thực hiện việc này.

NB Bạn ấy có thể sử dụng vòng lặp for và hàm append() để thêm các số chẵn vào danh sách.

NB Bạn ấy có thể sử dụng hàm clear() để xóa danh sách trước khi thêm các số chẵn vào.

TH Bạn ấy có thể dùng list comprehension để tạo danh sách một cách ngắn gọn.

VD Bạn ấy có thể tạo danh sách bằng cách liệt kê trực tiếp các số chẵn, nhưng cách này không hiệu quả nếu muốn tạo danh sách lớn hơn.

Một giáo viên muốn quản lý danh sách học sinh trong lớp. Giáo viên cần thêm, xóa và tìm kiếm học sinh trong danh sách.

NB Giáo viên có thể sử dụng lệnh append() để thêm học sinh vào cuối danh sách.

NB Giáo viên có thể sử dụng lệnh remove() để xóa học sinh khỏi danh sách, biết trước tên học sinh.

TH Giáo viên có thể sử dụng toán tử in để kiểm tra xem một học sinh có trong danh sách hay không.

VD Giáo viên không thể sắp xếp danh sách học sinh theo thứ tự bảng chữ cái vì Python không hỗ trợ việc này.

Một chương trình cần xử lý một danh sách các số nguyên. Chương trình cần loại bỏ các số âm và chèn số 0 vào đầu danh sách.

TH Chương trình có thể sử dụng vòng lặp while và lệnh remove() để loại bỏ các số âm.

NB Chương trình có thể sử dụng lệnh insert(0, 0) để chèn số 0 vào đầu danh sách.

TH Sau khi chèn số 0 vào đầu danh sách, độ dài của danh sách không thay đổi.

VD Nếu danh sách ban đầu không có số âm, chương trình sẽ không thực hiện bất kỳ thay đổi nào.

Bảng xếp hạng

Hạng Họ tên Điểm số Thời gian
1
Nguyễn Thanh Phú 1 lần thi
47/100
10 phút 25 giây
2
được cái xàm 1 lần thi
39/100
1 phút 34 giây

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *