我经常遇到类似以下问题的问题,并且很难编写干净的代码来解决它。通常,我有一些涉及临时变量和 for 循环的东西,但有更优雅的方法吗?
假设我有一个布尔值或评估为布尔值的值列表:
[True, False, True, False, False, True]
我如何将它映射到一个值列表,其中包含前一个 True 的索引?
[0, 0, 2, 2, 2, 5]
[编辑] 尝试过一些类似的东西:
def example(lst):
rst, tmp = [], None
for i in range(len(lst)):
if lst[i]:
tmp = i
rst.append(tmp)
return rst
假设列表的第一个元素始终为 True。