优草派  >   Python

python列表如何分成大小均匀的块?

徐晨光            来源:优草派

Python提供了许多方法可以将列表拆分成大小均匀的块。具体来说,可以使用切片、循环、zip()和numpy等库来实现。其中,切片是最常见和简单的方法,循环适用于列表大小固定的情况,zip()适用于需要合并两个列表的情况,numpy适用于需要进行更高级的数据处理的情况。

python列表如何分成大小均匀的块?

使用切片:

可以使用切片来拆分列表,最简单的方法是将列表长度除以块的大小,然后使用for循环来遍历列表。代码示例:

lst = ['a','b','c','d','e','f','g','h','i','j','k']

size = 3

result = [lst[i:i+size] for i in range(0, len(lst), size)]

print(result)

#输出:[['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'], ['j', 'k']]

使用循环:

另一种方法是使用循环逐个迭代列表中的元素,并将它们添加到子列表中。如果列表长度不足,可以将None作为填充值。代码示例:

lst = ['a','b','c','d','e','f','g','h','i','j','k']

size = 3

def split_list(lst, size):

result = []

for i in range(0, len(lst), size):

chunk = lst[i:i+size]

if len(chunk) != size:

chunk = chunk + [None] * (size - len(chunk))

result.append(chunk)

return result

print(split_list(lst, size))

#输出:[['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'], ['j', 'k', None]]

使用zip()形成元组:

另一种方法是使用zip()生成元组,并以此作为基础创建新的列表。代码示例:

lst = ['a','b','c','d','e','f','g','h','i','j','k']

size = 3

def split_list(lst, size):

return list(zip(*[iter(lst)]*size))

print(split_list(lst, size))

#输出:[('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'h', 'i'), ('j', 'k', None)]

使用numpy库:

最后一种方法是使用numpy库,使用split()函数可轻松拆分列表。

import numpy as np

lst = ['a','b','c','d','e','f','g','h','i','j','k']

size = 3

result = np.array_split(lst, len(lst) / size)

print(result)

#输出:[array(['a', 'b', 'c'], dtype='

总之,这四种方法都可以将一个列表分成大小均匀的块,但它们适用于不同的场景,因此根据具体情况选择最合适的方法是最重要的。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行