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

Đếm phần tử khác nhau (distinct) trong mảng Python


Khi list chứa phần tử trùng lặp, len(list) trả về tổng số phần tử (kể cả trùng). Để đếm số phần tử duy nhất (distinct/unique), ta dùng Counter từ collections hoặc chuyển sang set.

Cách 1: Dùng Counter (như bài gốc)

from collections import Counter

my_list = ['Mon', 'Tue', 'Wed', 'Mon', 'Tue']
print("Độ dài list gốc:", len(my_list))

# Counter.keys() trả về view các key duy nhất
distinct = Counter(my_list).keys()
print("Các phần tử khác nhau:", list(distinct))
print("Số phần tử khác nhau:", len(distinct))

Kết quả

Độ dài list gốc: 5
Các phần tử khác nhau: ['Mon', 'Tue', 'Wed']
Số phần tử khác nhau: 3

Cách 2: Dùng set (khuyên dùng - đơn giản hơn)

my_list = ['Mon', 'Tue', 'Wed', 'Mon', 'Tue']
distinct_set = set(my_list)
print("Số phần tử khác nhau:", len(distinct_set))
print("Các phần tử:", distinct_set)

Kết quả

Số phần tử khác nhau: 3
Các phần tử: {'Mon', 'Tue', 'Wed'}

So sánh

Phương phápƯu điểmNhược điểm
Counter.keys()Giữ thông tin tần suất nếu cần sau nàyHơi phức tạp cho việc chỉ đếm distinct
set()Ngắn gọn, nhanh, pythonicMất thông tin tần suất

Kết luận

Để chỉ đếm số phần tử duy nhất, hãy dùng len(set(my_list)). Dùng Counter khi cần cả tần suất.