以列表中的特征值切片

问题遇到的现象和发生背景

刚自学python,在做列表切分时,想以一个特征值为节点对列表切分

问题相关代码,请勿粘贴截图
a=[0.1,0.2,0.3,0.5,0,0.3,0.7,0,0.9,0.8,0,4,0.5,0]
r = [i for i in range(len(a)) if a[i] == 0]
b=[]
for n in r:
    b=a[:n+1]
    print(b) 
运行结果及报错内容
[0.1, 0.2, 0.3, 0.5, 0]
[0.1, 0.2, 0.3, 0.5, 0, 0.3, 0.7, 0]
[0.1, 0.2, 0.3, 0.5, 0, 0.3, 0.7, 0, 0.9, 0.8, 0]
[0.1, 0.2, 0.3, 0.5, 0, 0.3, 0.7, 0, 0.9, 0.8, 0, 4, 0.5, 0]
我的解答思路和尝试过的方法

我自己写的对列表a以0为节点进行切分,我的思路是先确定列表中特征值0的索引,在对取到的索引值用for循环,但卡在了每次都是从最开始取数,没有达到我想的以0分段取值的效果,刚学python所以请求帮助,谢谢!

我想要达到的结果
[0.1, 0.2, 0.3, 0.5, 0]
[0.3, 0.7, 0]
[0.9, 0.8, 0]
[4, 0.5, 0]

我是这样写的:能得到你要的结果

a = [0.1,0.2,0.3,0.5,0,0.3,0.7,0,0.9,0.8,0,4,0.5,0]
b = []
for i in range(len(a)):
    b.append(a[i])
    if a[i] == 0:
        print(b)
        b = []

a = [0.1, 0.2, 0.3, 0.5, 0, 0.3, 0.7, 0, 0.9, 0.8, 0, 4, 0.5, 0]
r = [i for i in range(len(a)) if a[i] == 0]
b = []

s = [0]
for n in r:
    s.append(n+1)
# print(s)
for i, j in zip(s, r):
    # print(i, j)
    print(a[i:j+1])

img

新产生的s为[0, 5, 8, 11, 14],然后使用zip函数,即可得出你所要的结果