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 = []
添加回答
举报