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

Python – Lọc hàng bất biến biểu diễn khóa từ điển từ ma trận


Khi cần lọc các hàng trong ma trận mà mọi phần tử đều là kiểu dữ liệu bất biến (immutable) – có thể dùng làm khóa từ điển, ta dùng list comprehension và isinstance().

Ví dụ

my_list = [[24, 15, [32, 33, 12]], ["pyt", 8, (14, 54)], [{15: 24}, 13, "fun"], [True, "cool"]]
print("Danh sách ban đầu:")
print(my_list)
my_result = [row for row in my_list if all(isinstance(element, (int, bool, float, tuple, str)) for element in row)]
print("Kết quả:")
print(my_result)

Kết quả

Danh sách ban đầu: [[24, 15, [32, 33, 12]], ['pyt', 8, (14, 54)], [{15: 24}, 13, 'fun'], [True, 'cool']]
Kết quả: [['pyt', 8, (14, 54)], [True, 'cool']]

Giải thích

  • Định nghĩa ma trận chứa các kiểu dữ liệu khác nhau (list, tuple, dict, bool, str, int).

  • Kiểu bất biến (hashable) trong Python: int, bool, float, tuple, str, frozenset...

  • List comprehension với all(isinstance(el, (int, bool, float, tuple, str)) ...).

  • Hàng 1 chứa list [32,33,12] (mutable) -> loại. Hàng 3 chứa dict {15:24} -> loại.

  • Chỉ hàng 2 và 4 toàn kiểu bất biến.