[英]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.