Duyệt và xử lý danh sách¶
Tóm lược nội dung
Bài này trình bày cách duyệt và xử lý các phần tử trong danh sách.
Khái quát¶
Để duyệt và xử lý các phần tử trong danh sách, ta có thể sử dụng vòng lặp for
kết hợp lệnh if
nằm bên trong.
Lọc ra các phần tử thoả điều kiện¶
Ý tưởng chính:
Duyệt từng phần tử trong danh sách, nếu phần tử nào thoả điều kiện thì nạp vào danh sách mới.
def filter_function(L):
n = len(L)
new_list = []
for i in range(n):
if L[i] thoả điều kiện:
new_list.append(L[i])
return new_list
Ví dụ:
Yêu cầu:
Viết chương trình lọc ra các số chẵn trong danh sách.
Mã lệnh:
Thay vì nhập từng phần tử từ bàn phím, ta có thể phát sinh các phần tử một cách ngẫu nhiên.
Trước hết, ta viết hàm generate()
có tham số đầu vào n
là số lượng phần tử cần phát sinh.
Hàm này trả về một danh sách chứa n
số nguyên có giá trị ngẫu nhiên trong phạm vi [1..100]
(bao gồm cả số 100
).
Để phát sinh ngẫu nhiên, ta dùng hàm randint()
của thư viện random
.
Hàm filter_even()
dùng lọc ra các số chẵn trong danh sách. Điều kiện kiểm tra chẵn là số đó có chia hết cho 2 hay không, cụ thể: L[i] % 2 == 0
.
Nếu phần tử nào thoả điều kiện thì ta dùng hàm append() để nạp phần tử đó vào cuối danh sách kết quả even_list
.
Trong chương trình chính, ta gọi các hàm vừa viết trên ra thực hiện.
Output:
Nhập số lượng phần tử: 10
Danh sách ban đầu: [96, 43, 25, 37, 18, 32, 94, 22, 21, 13]
Danh sách các số chẵn: [96, 18, 32, 94, 22]
Lưu ý
Do danh sách được phát sinh ngẫu nhiên, nên kết quả có thể khác nhau trong các lần chạy chương trình.
Hỏi chút chơi - phần 1
Đếm số lượng phần tử thoả điều kiện¶
Ý tưởng chính:
Duyệt từng phần tử trong danh sách, nếu phần tử nào thoả điều kiện thì tăng biến đếm lên 1.
def count_function(L):
n = len(L)
counter = 0
for i in range(n):
if L[i] thoả điều kiện:
counter = counter + 1
return counter
Ví dụ:
Yêu cầu:
Viết chương trình đếm số lượng phần tử vừa chia hết cho 3 vừa chia hết cho 5 trong danh sách.
Mã lệnh:
Lưu ý
Từ đây trở đi sẽ không viết lại hàm generate()
nữa, mà chỉ viết những hàm mới liên quan.
Người học có thể tự đặt các hàm mới vào trước chương trình chính. Sau đó, trong chương trình chính, chỉ cần gọi các hàm mới ra thực hiện.
Hàm count_multiple_of_3_and_5()
dùng để đếm số lượng các số chia hết cho cả 3 và 5.
Để kết hợp hai điều kiện xảy ra đồng thời, ta dùng toán tử and
.
Trong chương trình chính, ta gọi hàm count_multiple_of_3_and_5()
như sau:
Output:
Hỏi chút chơi - phần 2
Tìm phần tử thoả điều kiện¶
Ý tưởng chính:
Duyệt từng phần tử trong danh sách, nếu phần tử nào thoả điều kiện thì trả về chỉ số (vị trí) của phần tử đó.
Ngược lại, nếu đã duyệt hết danh sách, nghĩa là không có phần tử nào thoả điều kiện, thì trả về -1 (1).
- Do chỉ số của các phần tử trong danh sách không bao giờ âm, nên
-1
có thể được xem là tín hiệu cho biết không tìm thấy phần tử thoả điều kiện.
Ví dụ:
Yêu cầu:
Viết chương trình tìm phần tử đầu tiên trong danh sách mà có giá trị bằng k. Trong đó, k là một số nguyên do người dùng nhập vào.
Mã lệnh:
Hàm find()
dưới đây gồm có hai tham số đầu vào:
- Tham số
L
là danh sách cần tìm kiếm. - Tham số
k
là giá trị cần tìm.
Trong chương trình chính, ta gọi hàm find()
như sau:
Output:
Hỏi chút chơi - phần 3
Tìm phần tử lớn nhất¶
Ý tưởng chính:
Duyệt từng phần tử trong danh sách, nếu phần tử nào lớn hơn giá trị lớn nhất hiện tại thì cập nhật giá trị lớn nhất mới.
def max_function(L):
n = len(L)
max_value = L[0]
for i in range(1, n):
if L[i] > max_value:
max_value = L[i]
return max_value`
Ví dụ:
Yêu cầu:
Viết chương trình tìm phần tử lớn nhất trong danh sách.
Mã lệnh:
Hàm max_value()
sau đây thực hiện theo các bước:
- Giả sử phần tử đầu tiên là lớn nhất. Gán phần tử này cho biến
max_val
. -
Lần lượt so sánh các phần tử tiếp theo với
max_val
bằng cách:Duyệt từng phần tử trong phạm vi
[1..n - 1]
:Nếu phần tử
L[i]
lớn hơnmax_val
thì gánL[i]
chomax_val
.
Cần lưu ý, giá trị của max_val
có thể thay đổi trong quá trình duyệt.
Trong chương trình chính, ta gọi hàm max_value()
như sau:
Output:
Hỏi chút chơi - phần 4
Sơ đồ tóm tắt¶
Mã nguồn¶
Các đoạn mã trong bài được đặt tại:
Some English words¶
Vietnamese | Tiếng Anh |
---|---|
duyệt (phần tử trong danh sách) | iterate |
điều kiện | condition, criteria |
khởi tạo | initialize |
Bài tập thực hành¶
Bạn có thể tự thực hành các bài tập sau tại Google Colab.