我已经看到关于如何从平面列表中创建列表的很好的答案。我的问题是在创建列表列表之前先弹出一些值,然后得到以下结果:
l = ['119', '222', '219', '293', '4', '179', '124', '500', '235', '7']
wanted_output = [['119', '222', '219', '293'], '4', ['179', '124', '500', '235'], '7']
到目前为止,我已经尝试过:
ll = [l[i:i+4] for i in range(0, len(l), 4)]
[['119', '222', '219', '293'], ['4', '179', '124', '500'], ['235', '7']]
结果不是我想要的。我想实现每四个元素包含一个列表列表,下一个元素(每个第4个元素)是独立且独立的元素,例如,在这种情况下,我要获取的元素是4和7。>
答案 0 :(得分:6)
>>> [x for i in range(0, len(l), 5) for x in (l[i:i+4], l[i+4])]
[['119', '222', '219', '293'], '4', ['179', '124', '500', '235'], '7']
答案 1 :(得分:1)
如果输入的长度可被5整除,则可以使用
from itertools import chain
l = ['119', '222', '219', '293', '4', '179', '124', '500', '235','7']
list(chain.from_iterable((a, b) for *a, b in zip(*[iter(l)]*5)))
# [['119', '222', '219', '293'], '4', ['179', '124', '500', '235'], '7']
,它不需要可迭代的输入是可切片的。