Với rất nhiều giải pháp được đề xuất, tôi ngạc nhiên khi không ai đề xuất những gì tôi coi là một giải pháp rõ ràng [đối với các yếu tố không thể so sánh nhưng có thể so sánh]-[____ 11] [1].
print most_common[['goose', 'duck', 'duck', 'goose']]
2 cung cấp chức năng nhanh, có thể tái sử dụng và cho phép bạn ủy thác một số logic khó khăn cho các thành phần thư viện tiêu chuẩn được thử nghiệm tốt. Xem xét ví dụ:import itertools
import operator
def most_common[L]:
# get an iterable of [item, iterable] pairs
SL = sorted[[x, i] for i, x in enumerate[L]]
# print 'SL:', SL
groups = itertools.groupby[SL, key=operator.itemgetter[0]]
# auxiliary function to get "quality" for an item
def _auxfun[g]:
item, iterable = g
count = 0
min_index = len[L]
for _, where in iterable:
count += 1
min_index = min[min_index, where]
# print 'item %r, count %r, minind %r' % [item, count, min_index]
return count, -min_index
# pick the highest-count/earliest item
return max[groups, key=_auxfun][0]
Điều này có thể được viết chính xác hơn, tất nhiên, nhưng tôi đang nhắm đến sự rõ ràng tối đa. Hai tuyên bố
print most_common[['goose', 'duck', 'duck', 'goose']]
3 có thể không được đưa ra để thấy tốt hơn các máy móc hoạt động; Ví dụ, với các bản in chưa được đưa ra:print most_common[['goose', 'duck', 'duck', 'goose']]
emits:
SL: [['duck', 1], ['duck', 2], ['goose', 0], ['goose', 3]]
item 'duck', count 2, minind 1
item 'goose', count 2, minind 0
goose
Như bạn thấy,
print most_common[['goose', 'duck', 'duck', 'goose']]
4 là danh sách các cặp, mỗi cặp một mục theo sau là chỉ mục của mục trong danh sách ban đầu [để thực hiện điều kiện chính, nếu các mục "phổ biến nhất" có cùng số lượng cao nhất> 1, kết quả phải là cái sớm nhất].print most_common[['goose', 'duck', 'duck', 'goose']]
5 Chỉ các nhóm theo mục [thông qua print most_common[['goose', 'duck', 'duck', 'goose']]
6]. Hàm phụ trợ, được gọi là một lần mỗi nhóm trong quá trình tính toán print most_common[['goose', 'duck', 'duck', 'goose']]
7, nhận và trong nội bộ giải nén một nhóm - một tuple với hai mục print most_common[['goose', 'duck', 'duck', 'goose']]
8 trong đó các mục của Iterable cũng là các bộ dữ liệu hai mục, print most_common[['goose', 'duck', 'duck', 'goose']]
9 [[các mục của print most_common[['goose', 'duck', 'duck', 'goose']]
4]].Sau đó, chức năng phụ trợ sử dụng một vòng lặp để xác định cả số lượng các mục nhập trong ITable của nhóm và chỉ mục gốc tối thiểu; Nó trả về những người như kết hợp "Khóa chất lượng", với chỉ số tối thiểu được thay đổi để hoạt động
print most_common[['goose', 'duck', 'duck', 'goose']]
7 sẽ xem xét "tốt hơn" những mục xảy ra trước đó trong danh sách ban đầu.Mã này có thể đơn giản hơn nhiều nếu nó lo lắng ít hơn một chút về các vấn đề lớn về thời gian và không gian, ví dụ ....:
def most_common[L]:
groups = itertools.groupby[sorted[L]]
def _auxfun[[item, iterable]]:
return len[list[iterable]], -L.index[item]
return max[groups, key=_auxfun][0]
cùng một ý tưởng cơ bản, chỉ thể hiện đơn giản và nhỏ gọn hơn ... nhưng, than ôi, một không gian phụ O [n] bổ sung [để thể hiện thời gian của các nhóm] và thời gian O [n bình phương] [để có được
SL: [['duck', 1], ['duck', 2], ['goose', 0], ['goose', 3]]
item 'duck', count 2, minind 1
item 'goose', count 2, minind 0
goose
2 của mỗi mục ]. Mặc dù tối ưu hóa sớm là gốc rễ của tất cả các điều ác trong lập trình, nhưng cố tình chọn cách tiếp cận O [n bình phương] khi có sẵn một O [n log n], có sẵn quá nhiều so với hạt của khả năng mở rộng!-]Cuối cùng, đối với những người thích "oneliners" với sự rõ ràng và hiệu suất, phiên bản 1 liner thưởng với tên được tạo ra phù hợp :-].
from itertools import groupby as g
def most_common_oneliner[L]:
return max[g[sorted[L]], key=lambda[x, v]:[len[list[v]],-L.index[x]]][0]
Trong bài viết này, chúng ta sẽ xem làm thế nào để tìm ra yếu tố phổ biến nhất trong một danh sách nhất định. Nói cách khác, yếu tố có tần số cao nhất.
Với tối đa và đếm
Chúng tôi áp dụng lý do tại sao hàm thiết lập để có được các yếu tố duy nhất của danh sách và sau đó giữ tài khoản của từng yếu tố trong danh sách. Cuối cùng áp dụng một hàm tối đa để có được phần tử có tần số cao nhất.
Thí dụ
& nbsp; bản demo trực tiếp
# Given list listA = [45, 20, 11, 50, 17, 45, 50,13, 45] print["Given List:\n",listA] res = max[set[listA], key = listA.count] print["Element with highest frequency:\n",res]
Đầu ra
Chạy mã trên cho chúng ta kết quả sau -
Given List: [45, 20, 11, 50, 17, 45, 50, 13, 45] Element with highest frequency: 45
Với quầy
Chúng tôi sử dụng chức năng truy cập từ các bộ sưu tập. Sau đó áp dụng chức năng phổ biến nhất để có được kết quả cuối cùng.
Thí dụ
& nbsp; bản demo trực tiếp
from collections import Counter # Given list listA = [45, 20, 11, 50, 17, 45, 50,13, 45] print["Given List:\n",listA] occurence_count = Counter[listA] res=occurence_count.most_common[1][0][0] print["Element with highest frequency:\n",res]
Đầu ra
Chạy mã trên cho chúng ta kết quả sau -
Given List: [45, 20, 11, 50, 17, 45, 50, 13, 45] Element with highest frequency: 45
Với quầy
Chúng tôi sử dụng chức năng truy cập từ các bộ sưu tập. Sau đó áp dụng chức năng phổ biến nhất để có được kết quả cuối cùng.
Thí dụ
from statistics import mode # Given list listA = [45, 20, 11, 50, 17, 45, 50,13, 45] print["Given List:\n",listA] res=mode[listA] print["Element with highest frequency:\n",res]
Đầu ra
Chạy mã trên cho chúng ta kết quả sau -
Given List: [45, 20, 11, 50, 17, 45, 50, 13, 45] Element with highest frequency: 45
Cập nhật vào ngày 04 tháng 6 năm 2020 11:44:36
- Câu hỏi và câu trả lời liên quan
- Chương trình tìm tần số của yếu tố thường xuyên nhất trong Python
- Tìm phần tử thường xuyên thứ hai trong mảng javascript
- C# chương trình để tìm phần tử thường xuyên nhất
- Tìm phần tử phổ biến nhất trong danh sách 2D trong Python
- Chương trình Python cho các từ thường xuyên nhất trong danh sách chuỗi
- Chương trình python để tìm ký tự thường xuyên nhất trong một chuỗi
- Phần tử thường xuyên nhất trong một mảng trong C ++
- Chương trình tìm hiểu chỉ số của yếu tố thường xuyên nhất trong một mảng được che giấu trong Python
- Tìm ký tự thường xuyên thứ hai trong mảng - JavaScript
- Tìm các từ K thường xuyên nhất từ tập dữ liệu trong Python
- Chương trình tìm tổng số cây con thường xuyên nhất của cây nhị phân trong Python
- Viết một chương trình trong C ++ để tìm phần tử thường xuyên nhất trong một mảng số nguyên nhất định
- Chương trình tìm ký tự thường xuyên thứ hai trong C ++
- Tổng Subtree thường xuyên nhất trong C ++
- Ký tự thường xuyên thứ hai trong chuỗi - javascript