Sắp xếp các hàng của ma trận (danh sách lồng) theo số lượng giá trị None trong mỗi hàng. Sử dụng list comprehension, not và len() trong hàm key.
Mã nguồn
def get_None_freq(row):
# Đếm số phần tử falsy (None, 0, '', False, etc.) - nhưng ở đây chỉ None
return len([element for element in row if not element])
my_list = [[None, 24], [None, 33, 3, None], [42, 24, 55], [13, None, 24]]
print("Ma trận gốc:", my_list)
my_list.sort(key=get_None_freq)
print("Ma trận sau sắp xếp:", my_list)
Kết quả
Ma trận gốc: [[None, 24], [None, 33, 3, None], [42, 24, 55], [13, None, 24]] Ma trận sau sắp xếp: [[42, 24, 55], [None, 24], [13, None, 24], [None, 33, 3, None]]
Giải thích
if not elementcoiNonelà True (và cả 0, '', False...).- Hàng [42, 24, 55]: 0 None → đầu tiên.
- Hàng [None, 24] và [13, None, 24]: 1 None → giữ thứ tự gốc (stable).
- Hàng [None, 33, 3, None]: 2 None → cuối cùng.
Chỉ đếm None chính xác
def get_None_freq_exact(row):
return len([e for e in row if e is None])
Dùng is None thay vì not element để tránh nhầm lẫn với 0, chuỗi rỗng, False.