给定这样一个清单
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),然后三次计算arr.count(3),然后两次计算arr.count(3)。
因此,为了不重复数字,您要做的就是计算列表中的唯一数字,它们分别是1、2和3。因此正确的代码是:
occ = [arr.count(e) for e in set(arr)]
现在,当您打印列表时,将获得预期的[2,3,2]。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句