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>
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()
.
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 = ["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)
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ệnh | Mô 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.
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ấyvalue
.
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ènvalue
vào vị tríindex
.
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)
và A.insert(0, 1)
có tác dụng giống nhau?
A.append(1)
và 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.
và [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.
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
.
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”.
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ẻ.
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
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.
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.
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
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 |