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.