从功能返回不应该是无

时间:2015-07-09 21:15:06

标签: python indexoutofrangeexception

为什么这个功能导致:

  

哎呀,再试一次。 remove_duplicates([])导致错误:列表索引超出范围“?

我的功能如下

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

谢谢。

1 个答案:

答案 0 :(得分:1)

要回答您的问题,您需要检查列表的长度,如果是空的则返回

if not listIn:
    return []

然而你的整个方法可以用这样的集合简化

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

输出:

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

当然这是假设您希望将数据保存在列表中...如果您不在乎,请删除外部list()转换以使其更快。无论如何,这将是一个比你写的更快的方法

相关问题