Return 来自函数不应该是 None

Return from function shouln't be None

为什么这个函数会导致:

Oops, try again. remove_duplicates([]) resulted in an error: list index out of range"?

我的函数如下

def remove_duplicates(listIn):
    listSorted = sorted(listIn)
    prevInt = listSorted[0]
    listOut = []
    listOut.append(prevInt)
    for x in listSorted:
        if (x != prevInt):
            prevInt = x
            listOut.append(x)

    print listOut

    return listOut

remove_duplicates([1,2,3,3,3])

输出:

[1, 2, 3]
None

谢谢。

要回答您的问题,您只需检查列表的长度,return 如果它是空的

if not listIn:
    return []

但是你的整个方法可以用这样的集合来简化

def remove_duplicates(listIn):
    return list(set(listIn))

输出:

>>> print remove_duplicates([1,2,3,3,3])
>>> [1, 2, 3]

当然,这是假设您希望将数据保存在列表中。如果您不在乎,则删除外部 list() 转换以使其更快。不管怎样,这比你写的要快得多