我正在研究Think Python Textbook,它给出的一个问题是创建一个带有列表的函数,并返回一个只包含原始元素的列表。到目前为止我所拥有的是:
def remove_duplicates(l):
index = 0
new_l = []
dup_l = []
while index < len(l):
if l[index] in l[index+1:] or l[index] in new_l:
dup_l += [l[index]]
index = index + 1
elif l[index] in dup_l:
index = index + 1
else:
new_l += [l[index]]
return new_l
我觉得必须有更简洁,pythonic的方式来编写这个函数。有人可以帮助这个初学程序员吗?
答案 0 :(得分:3)
我假设您想手动,以了解python语法,因此这是一种方法。
更新以获取有关仅获取仅发生一次且不删除重复项的元素的评论,您可以将if
条件替换为if L.count(element) == 1:
,它将返回{{ 1}}正如你所要求的那样。
[1,2,4]
如果你想深入研究python语法,你可以做list comprehension并进一步简化它,同时仍然不使用失去元素顺序的def unique(L):
uniqueElements = []
for element in L:
if element not in uniqueElements:
uniqueElements.append(element)
return uniqueElements
print(unique([1,2,3,3,4]))
方法:
set