Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python – Lọc hàng chứa tất cả phần tử của danh sách con

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_list có trong hàng không.
  • Nếu thiếu bất kỳ phần tử nào, gán flag = False.
  • Nếu flag vẫ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)]