2015-12-31 59 views
1

我想在条件基础上从一个列表中创建多个列表。如何从python中的一个列表中创建多个列表

实际数据:

numbers = [1, 2, 3,4,5,6,7,8,9, 1, 11, 12, 13, 1, 21, 22, 25, 6, 1, 34 ,5 ,6 ,7,78] 

预期成果:

[1, 2, 3,4,5,6,7,8,9] 
[1, 11, 12, 13] 
[1, 21, 22, 25, 6] 
[1, 34 ,5 ,6 ,7,78] 

这里是我的尝试:

list_number=[] 
numbers = [1, 2, 3,4,5,6,7,8,9, 1, 11, 12, 13, 1, 21, 22, 25, 6, 1, 34 ,5 ,6 ,7,78] 
for x in numbers: 
    if x==1: 
     list_number.append(numbers) 

print list_number[0] 
+1

发布您的尝试.. –

+0

您到目前为止尝试了什么? –

+1

'1'是一个分隔符,还是有一些其他的逻辑在工作? – TigerhawkT3

回答

5

而不是增加新的引用/原始numbers副本到list ,无论你何时看到,都要开始新的list一个1或添加到最新版本,否则:

list_number = [] 
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 11, 12, 13, 1, 21, 22, 25, 6, 1, 34, 5, 6, 7, 78] 
for x in numbers: 
    if x==1: 
     list_number.append([1]) 
    else: 
     list_number[-1].append(x) 

print list_number 

结果:

>>> for x in list_number: 
...  print x 
... 
[1, 2, 3, 4, 5, 6, 7, 8, 9] 
[1, 11, 12, 13] 
[1, 21, 22, 25, 6] 
[1, 34, 5, 6, 7, 78] 
0

我的建议是2步进,先找到那些的索引,然后从一个打印到其他和最后到最后:

ones_index=[] 
numbers = [1, 2, 3,4,5,6,7,8,9, 1, 11, 12, 13, 1, 21, 22, 25, 6, 1, 34 ,5 ,6 ,7,78] 
for i,x in enumerate(numbers): 
    if x==1: 
     ones_index.append(i) 

for i1,i in enumerate(ones_index): 
    try: 
     print numbers[i:ones_index[i1+1]] 
    except: 
     print numbers[i:] 
相关问题