如何将列表分成n个相等的部分,python

Gus*_*sto 11 python list divide

鉴于(任何)单词列表,lst我应该将其分成10个相等的部分.

x = len(lst)/10
Run Code Online (Sandbox Code Playgroud)

如何给这些部分变量名?

在输出中,我需要10个变量(part1, part2... part10),其中x包含单词数.

Pau*_*ine 29

在给定列表和块大小的情况下,单行返回列表列表:

>>> lol = lambda lst, sz: [lst[i:i+sz] for i in range(0, len(lst), sz)]
Run Code Online (Sandbox Code Playgroud)

测试:

>>> x = range(20, 36)
>>> print x
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]

>>> lol(x, 4)
[[20, 21, 22, 23], 
 [24, 25, 26, 27], 
 [28, 29, 30, 31], 
 [32, 33, 34, 35]]

>>> lol(x, 7)
[[20, 21, 22, 23, 24, 25, 26], 
 [27, 28, 29, 30, 31, 32, 33], 
 [34, 35]]
Run Code Online (Sandbox Code Playgroud)

更新:

我认为问题实际上是一个函数,给定一个列表和一个数字,返回一个包含$(数字)列表的列表,原始列表的项目均匀分布.所以你的lol(x,7)的例子应该真的回归[[20,21,22],[23,24,25],[26,27],[28,29],[30,31],[32 ,33],[34,35]]. - 马克里安

那么,在这种情况下,你可以尝试:

def slice_list(input, size):
    input_size = len(input)
    slice_size = input_size / size
    remain = input_size % size
    result = []
    iterator = iter(input)
    for i in range(size):
        result.append([])
        for j in range(slice_size):
            result[i].append(iterator.next())
        if remain:
            result[i].append(iterator.next())
            remain -= 1
    return result
Run Code Online (Sandbox Code Playgroud)

我相信这可以改善,但我感觉很懒.:-)

>>> slice_list(x, 7)
[[20, 21, 22], [23, 24, 25], 
 [26, 27], [28, 29], 
 [30, 31], [32, 33], 
 [34, 35]]
Run Code Online (Sandbox Code Playgroud)