我有一個帶有以下編號的串列:
[0, 0, 0, 0, 1, 1, 0, 0, 1]
我想做的是計算我有多少個連續的 1 并生成一個新串列,如下所示:
[0, 0, 0, 0, 1, 2, 0, 0, 1]
有沒有比這種方法更緊湊的方法?
lst = [0, 0, 0, 0, 1, 1, 0, 0, 1]
new_lst = []
counter = 0
for i in range(len(lst)):
if (lst[i] == 1): counter =1
else:counter = 0
new_lst.append(counter)
print(new_lst)
uj5u.com熱心網友回復:
如果您使用的是 python 3.8 或更高版本,則可以利用海象運算子:
[counter := counter 1 if v else 0 for v in lst]
或者也許itertools.accumulate:
[v for v in itertools.accumulate(lst, lambda acc, v:acc v if v else 0)]
在這兩種情況下,結果都是:
[0, 0, 0, 0, 1, 2, 0, 0, 1]
uj5u.com熱心網友回復:
它沒有問題解決方案那么緊湊,但更清楚:
l = [0, 0, 0, 0, 1, 1, 0, 0, 1]
s = []
occ = 0
for i in l:
occ = occ 1 if i==1 else 0
s.append(occ)
print(s)
輸出:
[0, 0, 0, 0, 1, 2, 0, 0, 1]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/495787.html
