在Python中从列表中删除重复字符串

54

如果我有一个字符串列表,

a = ["asd","def","ase","dfg","asd","def","dfg"]

如何从列表中删除重复项?

4个回答

103

转换为集合:

a = set(a)

或者选择返回一个列表:

a = list(set(a))

注意,这种方法不会保留顺序。如果你想要保留顺序:

seen = set()
result = []
for item in a:
    if item not in seen:
        seen.add(item)
        result.append(item)

在线查看演示: ideone


16

使用set类型来删除重复项

a = list(set(a))

6
def getUniqueItems(iterable):
result = []
for item in iterable:
    if item not in result:
        result.append(item)
return result

print (''.join(getUniqueItems(list('apple'))))

P.S. 这与这里的一个答案相同,但有点不同,不需要设置set!


这段代码片段是否保留了顺序? - tumultous_rooster
它确实保留了顺序,但具有二次复杂度,这对于任何稍微大一点的列表来说都是不好的。 - ReneSac
这太棒了!谢谢。 - raditya gumay

5
您可以将它们放入一个set中,然后再转回列表:
a = [ ... ]
s = set(a)
a2 = list(s)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接