python在for循环错误时改变列表

时间:2014-12-01 23:29:50

标签: python list loops

我想要做的就是删除列表中的任何重复元素L.C(L)正在工作,但D(L)显示TypeError:当我运行它时,类型'NoneType'的参数不可迭代。我认为这两个功能之间没有区别。我无法弄清楚它出现类型错误的原因:

def C(L):
    l = []
    for i in range(len(L)):
        if not(L[i] in l):
            l = l + [L[i]]
    return l
def D(L):
    l = []
    print type(l)
    for i in range(len(L)):
        if not (L[i] in l):
            l = l.append(L[i])
    return l

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

此:

l = l + [L[i]]

不等于此:

l = l.append(L[i])

上面一行为调用l函数的值append分配None,即l.append(L[i])

您可以改为使用:

{{1}}

答案 1 :(得分:0)

l = l.append(L[i])这会导致l为非,因为附加功能就位。因此,只需将l = l.append(L[i])更改为l.append(L[i])即可。这应该有所帮助。