如何在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
以下是一个示例程序,演示如何在Python中使用yield关键字将列表均分为相等大小的块。
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 loop和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模块
在Python中处理数组的通用程序包是numpy。它提供了一个具有出色速度和与这些数组交互的工具的多维数组对象。
示例
Numpy的数组split()方法将一个列表分割成大小相等的块。这里有6个单独的块。
import numpy as num
list = [23,56,83,19,38,64,92,56]
print('均匀大小的分块列表是:',num.array_split(list, 6))
输出
以下是上述代码的输出 –
均匀大小的分块列表是:[array([23, 56]), array([83, 19]), array([38]), array([64]), array([92]), array([56])]