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()
转换以使其更快。不管怎样,这比你写的要快得多
为什么这个函数会导致:
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()
转换以使其更快。不管怎样,这比你写的要快得多