2014-05-02 62 views
-6

我试图打印第二个列表而不打印第二个重复项。我想我可以使用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) 
+1

当你说它不起作用,你需要更具体。你期望发生什么?究竟发生了什么? –

+2

这里有几个问题。缩进是错误的。你使用'list'作为变量名称。在定义它之前,你正在访问它(只能用,因为'list'恰好是一个内置的名字)。您正在使用一个始终保持空白的字典“计数器”。你的问题很混乱。什么“第二名单”?什么是“第二副本”?什么“不起作用”? –

+0

请仅用示例输入和输出来解释应该发生什么。谢谢。 – sshashank124

回答

0

我觉得这是你想达到什么目的:

x = [] 
while True: 
    data = input() 
    if data.lower() == "done": 
     break 
    if data not in x: 
     x.append(data) 

的使用注意事项的while Truebreak,以避免有两个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) 
0

如果您不想在列表中重复你可以使用:

In [38]: l1 = [1,2,1,2,1,2] 

In [39]: l2= list(set(l1)) 

In [40]: l2 
Out[40]: [1, 2]