在Python中,如何从一个或多个列表中删除重复项?

Has*_*use 3 python list duplicates

例如,如果我有:

a = ["apples", "bananas", "cucumbers", "bananas"]
Run Code Online (Sandbox Code Playgroud)

我怎么能删除重复的"香蕉",以便:

a = ["apples", "bananas", "cucumbers"]
Run Code Online (Sandbox Code Playgroud)

另外,如果我有:

a = ["apples", "bananas", "cucumbers"]

b = ["pears", "apples", "watermelons"]
Run Code Online (Sandbox Code Playgroud)

我怎么能从两个列表中删除重复的"苹果",以便:

a = ["bananas", "cucumbers"]

b = ["pears", "watermelons"]
Run Code Online (Sandbox Code Playgroud)

kin*_*all 5

基于集合的解决方案不保留项目的顺序.以下内容将按顺序保留项目并删除除第一次出现之外的所有项目,使用辅助设置来跟踪已经看到的项目.

seen = set()
a = [seen.add(item) or item for item in a if item not in seen]
Run Code Online (Sandbox Code Playgroud)

如果要重用相同的列表对象,可以这样做:

seen = set()
a[:] = (seen.add(item) or item for item in a if item not in seen)
Run Code Online (Sandbox Code Playgroud)

  • 没错,但他没有提到它也不重要.如果重要的话,这是一个解决方案. (3认同)