2016-02-28 3 views
-3

Если я постоянно добавляю строки из ввода пользователя. Как я могу проверить, что, как только строка была добавлена ​​в список, содержимое уже было внутри?Как удалить и показать, что в списке есть дубликаты строк?

x = 4 
y = 9 
repeatList = [] 
abc = str(x)+str(y) 
repeatList.append(abc) 
x = 3 
y = 2 
abc = str(x)+str(y) 
repeatList.append(abc) 
x = 4 
y = 9 
abc = str(x)+str(y) 
repeatList.append(abc) 
print(repeatList) 

дает выход:

['49', '32', '49'] 

Нужный выход является ['49','32'] и сообщение "Вы введенный '49' уже."

Обратите внимание, что в действительном коде мы не назначаем переменные для int, вместо этого мы позволяем игроку вводить данные, и если они уже его уже писали, мы сообщаем им, что они набрали один и тот же ввод, и что они все еще теряют «движение».

ответ

0
x = 4 
y = 9 
repeatList = [] 
if str(x)+str(y) not in repeatList: 
    repeatList.append(str(x)+str(y)) 
else: 
    print('You have inputted {0} already.'.format(str(x)+str(y))) 

x = 3 
y = 2 
if str(x)+str(y) not in repeatList: 
    repeatList.append(str(x)+str(y)) 
else: 
    print('You have inputted {0} already.'.format(str(x)+str(y))) 
x = 4 
y = 9 
if str(x)+str(y) not in repeatList: 
    repeatList.append(str(x)+str(y)) 
else: 
    print('You have inputted {0} already.'.format(str(x)+str(y))) 
print(repeatList) 

Выход:

You have inputted 49 already. 
['49', '32'] 
2

Давайте предположим, что вы хотите вставить переменную x в список, так что вы проверить:

if x in lst: 
    print ("You have inputted", x, "already.") 
else: 
    lst.append(x) 
0

В дополнение к тому, что @idos уже сказал:
Если вас не интересует порядок вставки и добавляемые вами объекты: hashable, вы можете использовать set, который имеет значение faster performance than lists, когда нужно проверить, находится ли элемент внутри него.

>>> s = set() 
>>> s.add(49) 
>>> s 
set([49]) 
>>> s.add(32) 
>>> s 
set([32, 49]) 
>>> s.add(49) 
>>> s 
set([32, 49]) 
>>> s.add('49') 
>>> s 
set([32, 49, '49']) 
Смежные вопросы