我有一张这样的单子
lst = ['a','a','a','X','y','y','y','a','a','y','y','a','a','a','a','a','a','X','y','a','y','a','y','y','y','a','a','a','a']
我们的任务是得到这个输出
^{pr2}$解释:简单地说,在下一个X之前找到X和最后一个y,然后用y替换中间的a值。如果末尾没有下一个X,则考虑最后一个y
我所尝试的是找到开始和结束索引
starts = [i for i, x in enumerate(lst) if x == 'X']
[3,17]
ends = [i for i, x in enumerate(lst) if x == 'y']
[4,5,6,9,10,18,20,22,23,24]
然后循环开始寻找3,17之间的数字在结束,然后取最大值并从3替换为最大值,在本例中是10。等等。
问题是还有比这更好的方法吗?
你可以这样做:
输出
^{pr2}$注意,函数
fill_gap
返回一个新的列表(result
),但这可以很容易地更改为就地修改列表。在相关问题 更多 >
编程相关推荐