关于python:如何删除和显示列表中有重复的字符串?

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']

所需的输出是['49','32']和一条消息"您已经输入了'49'。

请注意,在实际的代码中,我们不为int赋值,而是允许播放器输入,如果他们之前已经写过,我们会让他们知道他们输入了相同的输入,并且他们仍然会丢失一个"移动"。


假设您要将变量x插入到您的列表中,那么您需要检查:

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']