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循环和range()方法从0迭代到列表的长度,使用chunk的大小作为步长。
  • 列表 ‘l[i:i+chunk大小]’ 返回每个chunk;yield返回这些chunk。
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的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])]

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程