Python:获取int类型的参数不是可迭代的错误

时间:2014-05-25 03:30:40

标签: python

为什么我得到“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

3 个答案:

答案 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 outout.append(x[i])之类的操作,因为out是一个整数。

你想:

out = [x[0]]

如果您希望out成为列表。

答案 2 :(得分:1)

out = x[0]应为out = [x[0]]

您收到的错误表明支票x[i] in out试图在out内查找内容,而且outint,因此您可以& #39; t int内有东西。相反,您应该out最初只包含x[0]列表