如何优雅地分割列表?
可能重复的问题:
如何在Python中将列表分割成均匀大小的块?
我有一个函数,代码如下:
def split_list(self,my_list,num):
.....
.....
其中我的列表是:
my_list = [['1','one'],['2','two'],['3','three'],['4','four'],['5','five'],['6','six'],['7','seven'],['8','eight']]
我想根据给定的数字来分割这个列表:
比如说如果数字是3,那么输出将会是:[[['1','one'],['2','two'],['3','three']],[['4','four'],['5','five'],['6','six']],[['7','seven'],['8','eight']]]
如果数字是4,那么:
[[['1','one'],['2','two'],['3','three'],['4','four']],[['5','five'],['6','six'],['7','seven'],['8','eight']]]
3 个回答
0
试着看看这个:如何把一个列表分成大小相等的块?
0
def split_list(lst, num):
def splitter(lst, num):
while lst:
head = lst[:num]
lst = lst[num:]
yield head
return list(splitter(lst, num))
这里是从交互式命令行运行这个代码的一个片段:
>>> def split_list(lst, num):
... def splitter(lst, num):
... while lst:
... head = lst[:num]
... lst = lst[num:]
... yield head
... return list(splitter(lst, num))
...
>>> split_list(range(10), 3)
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]]
3
我会直接用列表推导式或者生成器来处理:
[my_list[x:x+num] for x in range(0, len(my_list), num)]