2014-10-30 90 views
3

我有这个循环创建系数的列表:拆分列表

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。

+0

'itertools'是要走的路。 – smci 2014-10-30 19:44:50

回答

4

试着这么做

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

感谢您的建议@詹姆斯詹金森

+1

您可以使用'another_list [-1] .append(_c)'来始终引用最近的列表,从而节省宝贵的两行代码。 – 2014-10-30 19:26:31

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]]