2014-05-02 4 views
-6

Я пытаюсь напечатать второй список, не напечатав 2-го дубликата. Я решил, что могу использовать 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» - это встроенное имя). Вы используете словарь 'counter', который всегда остается пустым. И ваш вопрос очень запутан. Какой «второй список»? Что такое «второй дубликат»? Что «не работает»? –

+0

Пожалуйста, просто объясните с помощью примера ввода и вывода, что должно произойти. Спасибо. – sshashank124

ответ

0

Я думаю, что это то, что вы пытаетесь достичь:

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) 
0

Если вы не хотите дубликаты в списке, вы можете просто использовать:

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

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

In [40]: l2 
Out[40]: [1, 2] 
Смежные вопросы