【发布时间】:2014-09-30 06:23:28
【问题描述】:
我编写了以下代码来从列表中删除重复项:
def remove_duplicates(listy):
new_listy = []
for i in range(len(listy)):
a = listy.pop(i)
while a in listy:
listy = listy.remove(a)
else: new_listy.append(a)
return new_listy
运行代码时出现如下错误:
Traceback (most recent call last):
File "<pyshell#93>", line 1, in <module>
remove_duplicates([1,1,2,2])
File "C:\Python27\MIT_4.py", line 4, in remove_duplicates
a = listy.pop(i)
AttributeError: 'NoneType' object has no attribute 'pop.
是什么导致了这个错误?如何正确解决这个问题?
【问题讨论】:
-
注意,当从listy中移除一个item时,len(listy)会改变;通常我们反向循环:从 len(listy) - 1 到 0
-
你关心元素的顺序吗?如果没有,您可以从原始列表中创建一个
set,然后从中创建一个列表。
标签: python