Python 3.x 我的理解不正确吗?
我试图在一个出现奇数次的列表中找到一个整数。下面是我试图实现的解决方案,但我得到了以下结果:TypeError:int类型的参数不可iterable 我不明白为什么我的列表理解没有返回任何内容。如果我理解了错误,那么在某个我看不到的地方正在进行迭代Python 3.x 我的理解不正确吗?,python-3.x,Python 3.x,我试图在一个出现奇数次的列表中找到一个整数。下面是我试图实现的解决方案,但我得到了以下结果:TypeError:int类型的参数不可iterable 我不明白为什么我的列表理解没有返回任何内容。如果我理解了错误,那么在某个我看不到的地方正在进行迭代 from collections import Counter def find_it(seq): new_seq = Counter() odd_appearances = None for i in seq:
from collections import Counter
def find_it(seq):
new_seq = Counter()
odd_appearances = None
for i in seq:
new_seq[i] += 1
for v in new_seq.values():
if v % 2 == 1:
odd_appearances = v
return [k for k, v in new_seq.items() if odd_appearances in v]
对象
v
作为new_seq
计数器的值,是一个整数。这句话:
odd_appearances in v
尝试迭代v
以检查成员身份,正如您所注意到的,类型为“int”的参数是不可编辑的。这就是列表理解中有问题的部分。使用collections.Counter类的一种更具python风格的方法如下:
def find_it(seq):
new_seq = Counter(seq)
return [k for k, v in new_seq.items() if v % 2 == 1]
对象v
作为new_seq
计数器的值,是一个整数。这句话:
odd_appearances in v
尝试迭代v
以检查成员身份,正如您所注意到的,类型为“int”的参数是不可编辑的。这就是列表理解中有问题的部分。使用collections.Counter类的一种更具python风格的方法如下:
def find_it(seq):
new_seq = Counter(seq)
return [k for k, v in new_seq.items() if v % 2 == 1]