python – 从列表中删除某些特定元素之前的元素

假设我有一个列表:

a = ['no', 'no', 'no', 'yes', 'no', 'yes', 'no']

在这里,我想删除每个’是’前面的每个’不’.所以我的结果列表应该是这样的:

['no', 'no', 'yes', 'yes', 'no']

我发现为了从列表中删除元素的值,我们可以使用list.remove(..)作为:

a = ['no', 'no', 'no', 'yes', 'no', 'yes', 'no']
a.remove('no')
print a

但是它给我的结果只删除了第一次出现’no’:

['no', 'no', 'yes', 'no', 'yes', 'no']

如何通过删除列表中所有“是”之前出现的所有“否”来实现所需的结果?

最佳答案
试试这个:

a = ['no', 'no', 'no', 'yes', 'no', 'yes', 'no']
a = ' '.join(a)  
print(a.replace('no yes', 'yes').split(' '))

它正在做的是:
1.将列表合并为带有’.join()的字符串
2.用a.replace()替换’no yes’的所有出现次数和’yes’
3.使用a.split(”)将其拆分回列表

转载注明原文:python – 从列表中删除某些特定元素之前的元素 - 代码日志