我有一个列表是 a = ['R','R','R','B','R','B','B','S','S'] 。我的目标是删除重复的“R”和“S”,然后删除“B”(如果只有一个 R 或 S,则保留它)。因此,我希望输出为 ['R','R','S'],但我的输出是 ['R', 'S']。 谁能帮我看看我的代码?谢谢
这是我的代码
a = ['R','R','R','B','R','B','B','S','S'] # create a list to store R S B
a = [x for x in a if x != 'B'] # Delete all the B's
new_list = [] # create another list to store R and S without repeat
last = None
for x in a:
if last == x and (len(new_list) == 0 or new_list[-1] != x):
new_list.append(last)
last = x
print(new_list)
我的输出是这样的
['R', 'S']
但是我想要这个
['R','R','S']
请您参考如下方法:
您可以先使用 itertools.groupby 对元素进行分组,然后删除 B 值:
from itertools import groupby
a = ['R','R','R','B','R','B','S','S'] # create a list to store R S B
[k for k, v in groupby(a) if k != 'B']
结果:
['R', 'R', 'S']
