为什么我得到“int类型的参数不可迭代错误”?这是我的简单代码。
def remove_duplicates(x):
out = x[0]
for i in range(1,len(x)):
if x[i] in out:
print "duplicate " + str(x[i])
else:
out.append(x[i])
return out
remove_duplicates([4,5,5,4])
得到以下输出。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in remove_duplicates
TypeError: argument of type 'int' is not iterable
答案 0 :(得分:2)
if x[i] in out:
要求out
是可迭代的,即列表,字典,集合等。但是,您已将out
初始化为单个元素(x[0]
),不是收藏品
如果您希望out
成为使用x
的第一个元素初始化的列表,请执行以下操作:
out = [x[0]]
答案 1 :(得分:2)
分配时:
out = x[0]
out
现在是int
,您无法执行x[i] in out
或out.append(x[i])
之类的操作,因为out
是一个整数。
你想:
out = [x[0]]
如果您希望out
成为列表。
答案 2 :(得分:1)
out = x[0]
应为out = [x[0]]
。
您收到的错误表明支票x[i] in out
试图在out
内查找内容,而且out
是int
,因此您可以& #39; t int
内有东西。相反,您应该out
最初只包含x[0]
的列表。