如何从字符串/混合列表中删除重复项
问题描述:
我试图打印第二个列表而不打印第二个重复项。我想我可以使用x.remove(list),但它不起作用。有什么建议么?如何从字符串/混合列表中删除重复项
x = [] #initiate empty string
counter = {}
while list != "DONE":
list = input() #keep asking for input
for i in x:
if not i in counter:
x.append(list)
else:
x.remove(list)
答
我觉得这是你想达到什么目的:
x = []
while True:
data = input()
if data.lower() == "done":
break
if data not in x:
x.append(data)
的使用注意事项的while True
和break
,以避免有两个input
调用。
或者,使用set
:
x = set()
while True:
data = input()
if data.lower() == "done":
break
x.add(data)
x = list(x)
这会悄悄忽略尝试添加重复。
如果你真的做希望允许用户通过输入他们的第二时间x
删除项目,您可以添加else
和使用remove
(用于列表)或discard
(该组),例如:
x = set() # or []
while True:
data = input()
if data.lower() == "done":
break
if data in x:
x.discard(data) # or .remove(data)
else:
x.add(data) # or .append(data)
答
如果您不想在列表中重复你可以使用:
In [38]: l1 = [1,2,1,2,1,2]
In [39]: l2= list(set(l1))
In [40]: l2
Out[40]: [1, 2]
当你说它不起作用,你需要更具体。你期望发生什么?究竟发生了什么? –
这里有几个问题。缩进是错误的。你使用'list'作为变量名称。在定义它之前,你正在访问它(只能用,因为'list'恰好是一个内置的名字)。您正在使用一个始终保持空白的字典“计数器”。你的问题很混乱。什么“第二名单”?什么是“第二副本”?什么“不起作用”? –
请仅用示例输入和输出来解释应该发生什么。谢谢。 – sshashank124