我有一个看起来像这样的零和一个列表:
lst = [0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1]
我怎样才能把这个 lst 变成这个:
transformed_lst = lst = [0, 1, 1, 1, 1, 0, 0, 0, 2, 2, 0, 0, 0, 3, 0, 4, 4]
基本上,在每次出现 1 时,将其转换为 n+1 整数。我确信使用 itertools/groupby/functools 有一种优雅的方法可以做到这一点。这是一个尝试,但并不完全正确:
from itertools import cycle
ints = cycle(range(len(lst)))
transformed_lst = [next(ints) if i != 0 in lst else 0 for i in lst]
>>> [0, 0, 1, 2, 3, 0, 0, 0, 4, 5, 0, 0, 0, 6, 0, 7, 8]