3 回答

TA貢獻1836條經驗 獲得超13個贊
您可以使用itertools.groupby
:
import itertools as it
result = [list(g) for k, g in it.groupby(lst) if k == 0]

TA貢獻1824條經驗 獲得超6個贊
只要您只對連續的零感興趣,這里就有一個解決方案。這個想法是利用split字符串的方法。您只需將列表轉換為字符串,將其拆分為 1,然后返回列表。
lst = [1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1]
lst_str = "".join([str(x) for x in lst])
lst_str_zeros = lst_str.split("1")
new_lst = [[int(y) for y in x] for x in lst_zeros if x!=""]
print(new_lst)
[[0, 0, 0], [0, 0], [0, 0]]

TA貢獻1772條經驗 獲得超6個贊
使用變量檢查每次迭代中flag的狀態。list
nw_lst = []
tmp = []
flag = 0
lst = [1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1]
for i in lst:
if i == 0:
if flag == 0:
tmp.append(i)
flag = 1
else:
tmp.append(i)
else :
flag = 0
if flag == 0 and len(tmp):
nw_lst.append(tmp)
tmp = []
添加回答
舉報