Khi cần lấy các hàng chứa tất cả phần tử của một danh sách con, ta dùng biến cờ, vòng lặp và append().
Ví dụ
my_list = [[8, 6, 3, 2], [1, 6], [2, 1, 7], [8, 1, 2]]
print("Danh sách là:")
print(my_list)
sub_list = [1, 2]
result = []
for row in my_list:
flag = True
for element in sub_list:
if element not in row:
flag = False
if flag:
result.append(row)
print("Danh sách kết quả:")
print(result)
Kết quả đầu ra
Danh sách là: [[8, 6, 3, 2], [1, 6], [2, 1, 7], [8, 1, 2]] Danh sách kết quả: [[2, 1, 7], [8, 1, 2]]
Giải thích
- Duyệt từng hàng, giả định
flag = True. - Kiểm tra từng phần tử của
sub_listcó trong hàng không. - Nếu thiếu bất kỳ phần tử nào, gán
flag = False. - Nếu
flagvẫn True, thêm hàng vào kết quả.
Cách viết gọn (list comprehension + all):
result = [row for row in my_list if all(elem in row for elem in sub_list)]