2014-05-25 56 views
0

为什么我得到“int类型的参数不能迭代错误”?这是我的简单代码。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 

回答

1

当分配:

out = x[0] 

out现在是一个int,你不能做的事如x[i] in outout.append(x[i]),因为out是一个整数。

你想:

out = [x[0]] 

,如果你想out成为一个列表。

+1

hah..stupid错误。感谢您指出。 – jpr

1

out = x[0]应该是out = [x[0]]

您收到的错误指示检查x[i] in out是企图内out寻找什么,因为out是一个int,这个失败的,因为你不能有一个int里面的东西。相反,您应该首先制作out a 列表仅包含x[0]

1

if x[i] in out:要求out是一个迭代即列表,字典,组,等等。然而,已初始化out为单个元件(x[0]),而不是一个集合。
如果您打算out是与x第一个元素初始化列表,而是执行此操作:

out = [x[0]] 
相关问题