簡體   English   中英

如何使用 python 中的列表推導計算列表中元素的出現次數?

[英]How to compute the number of occurencies of elements in a list using list comprehensions in python?

給定一個像這樣的列表

arr = [1, 1, 2, 2, 2, 3, 3]

我想計算每個元素的出現次數並將其存儲在一個新列表中,但使用這樣的列表理解:

occ = [arr.count(e) for e in arr]

但這會打印出原始array: [1, 1, 2, 2, 2, 3, 3]而不是[2, 3, 2]分別是輸入數組中 1、2 和 3 的出現次數.

為什么會發生這種情況以及如何解決?

注意:如果可能,必須使用列表推導。

好吧,原因是當你這樣做的時候

arr = [1, 1, 2, 2, 2, 3, 3]

和 arr.count(1),您將獲得列表 arr 中數字 1 的出現次數。 然后當你這樣做時

occ = [arr.count(e) for e in arr]

您實際上是在計算 arr.count(1) 2 次,然后是 arr.count(3) 3 次,然后是 arr.count(3) 2 次。

所以,為了不重復數字,你必須做的是計算列表中的唯一數字,它們只是 1、2 和 3。所以正確的代碼是:

occ = [arr.count(e) for e in set(arr)]

現在,當您打印列表時,您將按預期獲得 [2,3,2] 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM