重复元素后拆分列表

时间:2014-10-30 19:19:49

标签: 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]

我想要一种在每个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.0之后附加所有内容。

2 个答案:

答案 0 :(得分:5)

您可以在列表理解中使用itertools.groupby

>>> [[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 :(得分:4)

尝试类似

的内容
another_list = []
for c_ in c:
    if c_ == 1.0:
        another_list.append([])
    another_list[-1].append(c_)

感谢@James Jenkinson的建议