Mic*_*oid 1 python list sublist
我想拆分一个看起来像这样的列表:
list = [5, a, b, c, d, e, 2, a, b, 4, a ,b ,c ,d , ...]
Run Code Online (Sandbox Code Playgroud)
进入这个:
list = [ [5, a, b, c, d, e], [2, a, b] , [4, a ,b ,c ,d] ...]
Run Code Online (Sandbox Code Playgroud)
第一个元素/数字是可变的,因此没有模式可以将其拆分为偶数块.块大小或长度应基于块的第一个元素.此外,字母字母只是占位符,使示例更具可读性,实际上字母字母是浮点数和数字.
所以大名单真的看起来像这样:
list = [5, 7, 3.2, 3.1, 4.6, 3, 2, 5.1, 7.1, 4, 5.12 ,3.4 ,4.8 ,12.1 , ...]
Run Code Online (Sandbox Code Playgroud)
Ste*_*ann 11
简单的方法,读取每个块长度n并包含下一个n值:
it = iter(l)
[[n, *islice(it, n)] for n in it]
Run Code Online (Sandbox Code Playgroud)
Python 2版本:
it = iter(l)
[[n] + list(islice(it, n)) for n in it]
Run Code Online (Sandbox Code Playgroud)
或者没有islice:
it = iter(l)
[[n] + [next(it) for _ in range(n)] for n in it]
Run Code Online (Sandbox Code Playgroud)
演示:
>>> from itertools import islice
>>> l = [5, 'a', 'b', 'c', 'd', 'e', 2, 'f', 'g', 4, 'h' ,'i' ,'j' ,'k']
>>> it = iter(l)
>>> [[n, *islice(it, n)] for n in it]
[[5, 'a', 'b', 'c', 'd', 'e'], [2, 'f', 'g'], [4, 'h', 'i', 'j', 'k']]
Run Code Online (Sandbox Code Playgroud)