函数返回不应该是非

2024-05-29 04:39:09 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么此函数会导致:

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

谢谢你。你知道吗


Tags: 函数inanerrorremoveduplicatesoopstry
1条回答
网友
1楼 · 发布于 2024-05-29 04:39:09

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

if not listIn:
    return []

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

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

输出:

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

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

相关问题 更多 >

    热门问题