Python 重复元素后拆分列表

Python 重复元素后拆分列表,python,list,Python,List,我有一个循环用于创建系数列表: for i in N: p = 0 for k in range(i+1): p += (x**k)/factorial(k) c.append(p) 例如,N=[2,3,4]将给出列表c: [1.0, 2.0, 2.5, 1.0, 2.0, 2.5, 2.6666666666666665, 1.0, 2.0, 2.5, 2.6666666666666665, 2.708333333333333] 我想要一种在每

我有一个循环用于创建系数列表:

for i in N:
    p = 0
    for k in range(i+1):
        p += (x**k)/factorial(k)
        c.append(p)
例如,
N=[2,3,4]
将给出列表c:

[1.0, 2.0, 2.5, 1.0, 2.0, 2.5, 2.6666666666666665, 1.0, 2.0, 2.5, 2.6666666666666665, 2.708333333333333]
我想要一种在每个1.0元素之后创建单独列表的方法。例如,嵌套列表:

[[1.0, 2.0, 2.5], [1.0, 2.0, 2.5, 2.6666666666666665], [1.0, 2.0, 2.5, 2.6666666666666665, 2.708333333333333]]
我在考虑使用if测试,比如

for c_ in c:
    if c_ == 1.0:
        anotherList.append(c_)
不过,这只附加了1.0,我不知道如何使它在1之后附加所有内容,而不是仅附加1.0

another_list = []
for c_ in c:
    if c_ == 1.0:
        another_list.append([])
    another_list[-1].append(c_)
感谢@James Jenkinson的建议,您可以在列表理解中使用:

>>> [[1.0]+list(g) for k,g in itertools.groupby(l,lambda x:x==1.0) if not k]
[[1.0, 2.0, 2.5], [1.0, 2.0, 2.5, 2.6666666666666665], [1.0, 2.0, 2.5, 2.6666666666666665, 2.708333333333333]]

您可以使用另一个列表[-1].append(_c)始终引用最新的列表,从而节省宝贵的两行代码。
itertools
是一种方法。