List 2D có list làm phần tử. Nói cách khác là list của các list. Trong bài này ta cần tìm phần tử phổ biến nhất trong tất cả các list bên trong một list.
Với max và count
Ta thiết kế list comprehension với điều kiện in để kiểm tra sự hiện diện của phần tử trong sublist cho trước. Sau đó áp dụng max cùng count để lấy phần tử tần suất cao nhất.
Ví dụ
def highest_freq(lst): SimpleList = [el for sublist in lst for el in sublist] return max(SimpleList, key=SimpleList.count) # Danh sách cho trước listA = [[45, 20, 11], [20, 17, 45], [20,13, 9]] print("Given List:\n",listA) print("Element with highest frequency:\n",highest_freq(listA))Đầu ra
Chạy mã trên cho kết quả sau:
Given List: [[45, 20, 11], [20, 17, 45], [20, 13, 9]] Element with highest frequency: 20
Với chain
Cách này tương tự cách trên. Nhưng ta dùng hàm chain từ module itertools.
Ví dụ
from itertools import chain def highest_freq(lst): SimpleList = list(chain.from_iterable(lst)) return max(SimpleList, key=SimpleList.count) # Danh sách cho trước listA = [[45, 20, 11], [20, 17, 45], [20,13, 9]] print("Given List:\n",listA) print("Element with highest frequency:\n",highest_freq(listA))Đầu ra
Chạy mã trên cho kết quả sau:
Given List: [[45, 20, 11], [20, 17, 45], [20, 13, 9]] Element with highest frequency: 20
Với Counter và chain
Trong cách này Counter từ collections đếm phần tử được lấy ra bằng chain từ itertools.
Ví dụ
from itertools import chain from collections import Counter def highest_freq(lst): SimpleList = chain.from_iterable(lst) return Counter(SimpleList).most_common(1)[0][0] # Danh sách cho trước listA = [[45, 20, 11], [20, 17, 45], [20,13, 9]] print("Given List:\n",listA) print("Element with highest frequency:\n",highest_freq(listA))Đầu ra
Chạy mã trên cho kết quả sau:
Given List: [[45, 20, 11], [20, 17, 45], [20, 13, 9]] Element with highest frequency: 20