如何在 Python 中将列表分割成大小相等的块?
列表是 Python 中最常用的数据结构之一。列表是 Python 中一种可变的数据结构,它包含有序的元素序列。以下是一个整数列表的示例:
示例
lis= [5, 10, 15, 20, 25] print(lis)
输出
如果执行以上代码片段,则会产生以下输出。
[5, 10, 15, 20, 25]
让我们讨论一下在 Python 中将列表分割成大小相等的块的各种方法。
使用切片操作符
您可以打印具有相同大小块的元素列表,并且可以使用切片操作符轻松解决。
示例
在下面的示例中,我们将 10 个数字分成了 5 个大小相等的列表。
lis=[1,2,3,4,5,6,7,8,9,10] x=0 y=10 for i in range(x,y,2): x=i print (lis[x:x+2])
输出
执行上述程序后,将获得以下输出。
[1, 2] [3, 4] [5, 6] [7, 8] [9, 10]
使用 yield 关键字
Yield 是 Python 中的一个关键字,用于从函数中返回,但它不会忘记其局部状态。
简单来说,当我们希望从函数中返回多个结果(部分解)而无需退出函数且不会丢失其局部状态时,可以使用 yield 关键字。
示例 1
以下是一个示例程序,用于演示使用 **yield** 关键字将 Python 中的列表分割成大小相等的块。
lis = [10,20,30,40,50,60,70,80,90,100] def chunks(l, n): for i in range(0, len(l), n): yield l[i:i + n] n = 2 t = list(chunks(lis, n)) print (t)
输出
执行上述程序后,将生成以下输出。
[[10, 20], [30, 40], [50, 60], [70, 80], [90, 100]]
示例 2
我们在下面的示例中定义了一个函数来分割列表。
- 使用 for 循环和 range() 方法从 0 迭代到列表的长度,使用块的大小作为步长。
- 列表“l[i:i+size_of_chunk]”返回每个块;yield 返回这些块。
def split(l, size_of_chunk): for i in range(0, len(l), size_of_chunk): yield l[i:i + size_of_chunk] size_of_chunk = 4 the_list = [23,56,83,19,38,64,92,56] print('The evenly sized chunk list is:',list(split(the_list, size_of_chunk)))
输出
执行上述代码后,我们得到以下输出:
The evenly sized chunk list is: [[23, 56, 83, 19], [38, 64, 92, 56]]
使用列表推导式
列表推导式提供更短的语法,并允许从其他可迭代对象(如元组、列表、字符串、数组等)创建新的列表。
示例
以下是一个示例程序,使用列表推导式将 Python 中的列表分割成大小相等的块。
lis = [1, 2, 3, 4, 5, 6, 7, 8, 9] n = 3 x = [lis[i:i + n] for i in range(0, len(lis), n)] print(x)
输出
执行上述程序后,将生成以下输出。
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
使用 numpy 模块
Numpy 是 Python 中用于处理数组的通用包。它提供了一个多维数组对象,具有出色的速度以及用于与这些数组交互的工具。
示例
Numpy 的 array_split() 方法将列表分成大小相等的块。这里有 6 个单独的块。
import numpy as num list = [23,56,83,19,38,64,92,56] print('The evenly sized chunk list is:',num.array_split(list, 6))
输出
以下是上述代码的输出:
The evenly sized chunk list is: [array([23, 56]), array([83, 19]), array([38]), array([64]), array([92]), array([56])]
广告