How to remove and show there were string duplicates in a list?
本问题已经有最佳答案,请猛点这里访问。
如果我不断地从用户的输入中添加字符串。如何检查一旦将字符串添加到列表中,内容就已经在列表中了?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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) |
给出输出:
1 | ['49', '32', '49'] |
所需的输出是
请注意,在实际的代码中,我们不为int赋值,而是允许播放器输入,如果他们之前已经写过,我们会让他们知道他们输入了相同的输入,并且他们仍然会丢失一个"移动"。
假设您要将变量
1 2 3 4 | if x in lst: print ("You have inputted", x,"already.") else: lst.append(x) |
除了@idos已经说过的:如果您对插入顺序不感兴趣,并且添加的对象是可哈希的,那么您可以使用一个集合,当检查元素是否已经在其中时,它的性能比列表快。
1 2 3 4 5 6 7 8 9 10 11 12 13 | >>> 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']) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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) |
输出:
1 2 | You have inputted 49 already. ['49', '32'] |