0

为什么这个函数会导致:

糟糕,再试一次。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

谢谢你。

4

1 回答 1

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()转换以使其更快。不管这将是比你写的更快的方法

于 2015-07-09T21:23:08.887 回答