【发布时间】:2019-11-09 18:54:41
【问题描述】:
我有一个列表是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']
【问题讨论】:
-
delete every repeat R's and S's between B.,那么不应该删除R's,因为B和S之间没有重复的R? -
重新阅读后,我删除了下面的答案,因为您的问题实际上没有意义。在您开始的列表中,B 之间没有重复的 R 或 S。根据这个描述,您的结果应该是
['R','R','R','B','R','B','B','S','S'],所以要么您的描述是错误的,要么您的结果是错误的。请澄清。 -
我认为我的描述是错误的。如果没有重复就保留它。输出是我想要的。不管有多少个R B S,我只想在删除B后只保留R和S一次。这样有意义吗?
-
@WenxuanLi,但您似乎也在删除重复的 R 和 S 值,这些值在 B 之间 not。我认为我下面的答案是您正在寻找的,但不是不好解释。也许你应该说你想删除组合在一起的 R 和 S 的重复。
-
是的,也许我的描述很混乱,但我不想在 B 之前或之后重复 R 和 S。
标签: python