Skip to main content
 首页 » 编程设计

Python之如何将嵌套列表拆分为更多列表

2025年05月04日19mfrbuaa

我有一个类似于此的嵌套列表,并按时间升序排序:

[[TIME, 'b', 0], 
[TIME, 'b', 1], 
[TIME, 'b', 1], 
[TIME, 'b', 1], 
[TIME, 'b', 10], 
[TIME, 'b', 0], 
[TIME, 'b', 1], 
[TIME, 'b', 1], 
[TIME, 'b', 10], 
[TIME, 'b', 0], 
[TIME, 'b', 1], 
[TIME, 'b', 1], 
[TIME, 'b', 1], 
[TIME, 'b', 1], 
[TIME, 'b', 10]] 

每个列表中的第三项是 0、1 或 10。0 代表开始,1 代表移动,10 代表结束。我怎样才能将它拆分成一个进一步的嵌套列表,这样我最终会得到一个类似于这样的旅程列表:

[[[TIME, 'b', 0],[TIME, 'b', 1],[TIME, 'b', 1],[TIME, 'b', 1],[TIME, 'b', 10]], 
[[TIME, 'b', 0],[TIME, 'b', 1],[TIME, 'b', 1],[TIME, 'b', 10]], 
[[TIME, 'b', 0],[TIME, 'b', 1],[TIME, 'b', 1],[TIME, 'b', 1],[TIME, 'b', 1],[TIME, 'b', 10]]] 

请您参考如下方法:

可能有更 pythonic 的方法来做到这一点,但这是实用的、直接的并且应该很容易理解。 biglist 保存初始数据。

newlist = [] 
sublist = [] 
for i in biglist: 
    sublist.append(i) 
    if i[2] == 10: 
        newlist.append(sublist) 
        sublist = [] 

给出:

[[[TIME, 'b', 0],[TIME, 'b', 1],[TIME, 'b', 1],[TIME, 'b', 1],[TIME, 'b', 10]], 
[[TIME, 'b', 0],[TIME, 'b', 1],[TIME, 'b', 1],[TIME, 'b', 10]], 
[[TIME, 'b', 0],[TIME, 'b', 1],[TIME, 'b', 1],[TIME, 'b', 1],[TIME, 'b', 1],[TIME, 'b', 10]]]