我想打印出现多次的任何数字。如何将for循环更改为列表推导?

from collections import Counter
cnt=Counter()
in1="4 8 0 3 4 2 0 3".split(" ")
for elt in in1:
    cnt[elt]+=1
more_than_one=[]
for value, amount in cnt.items():
    if amount > 1: more_than_one.append(value)
print(*more_than_one)


理想的输出:4 0 3

最佳答案

不用自己计算值:

cnt=Counter()
in1="4 8 0 3 4 2 0 3".split(" ")
for elt in in1:
    cnt[elt]+=1


您只需将in1传递给collections.Counter()即可为您进行所有计数:

cnt = Counter(in1)


至于将代码转换为列表理解,您可以尝试以下方法:

from collections import Counter

in1="4 8 0 3 4 2 0 3".split()

cnt = Counter(in1)

print([k for k, v in cnt.items() if v > 1])


哪些输出:

['4', '0', '3']


注意:您也不需要将" "传递给split(),因为它默认为空白。

关于python - For循环到列表推导,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48595039/

10-12 21:24