For循环到List comprehensions

use*_*216 1 python loops

我想要打印出现不止一次的任何数字.如何将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)
Run Code Online (Sandbox Code Playgroud)

理想输出:4 0 3

Roa*_*ner 7

而不是自己计算值:

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

你可以简单地传递in1collections.Counter()你做所有的计数:

cnt = Counter(in1)
Run Code Online (Sandbox Code Playgroud)

至于将代码转换为列表理解,您可以尝试这样做:

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])
Run Code Online (Sandbox Code Playgroud)

哪些输出:

['4', '0', '3']
Run Code Online (Sandbox Code Playgroud)

注意:您也不需要传递" "split()它,因为它默认为空格.