个性化阅读
专注于IT技术分析

Python列表:划分为给定大小的块

在本教程中,您将使用列表并学习一种将任意大小的列表划分为给定大小的块的有效方法。

列表是Python中的内置数据结构, 用于存储异构项目并允许对这些项目的有效访问。当程序在单个请求中可以处理的项目数量受到限制时, 将列表分成N个大小的块是一项广泛的实践。

列表

列表是可以在其内部保存混合值或项目的数据结构。项目的示例是整数, 浮点数, 字符串等。列表是可变的, 这意味着你可以更改列表的内容而无需实际更改其标识。它们用方括号[]书写, 其中的各项用逗号(, )分隔。让我们创建一个可以使用的数字列表…

# Creating a list of 95 numbers
list_numbers = list(range(1, 96))
print(list_numbers)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95]

range()函数生成一个数字列表。它采用以下形式:range([start], stop [, step])其中” start”和” step”是可选参数。 start是序列中的起始数字, stop是它生成直至(但不包括)该数字的数字。 step是序列中每个数字之间的差。此函数的索引为0, 这意味着列表索引从0开始, 而不是在未指定开始时从1开始。

现在, 假设你需要将列表分解为较小的列表, 每个列表包含5个元素。

一种方法是定义一个生成器。生成器是定义迭代器的一种优雅方式。你问什么是迭代器?简而言之-迭代器是一个对象, 它知道如何计算并返回要迭代的对象中的下一项。你可以在srcmini的Python迭代器教程中阅读有关迭代器和生成器的更多信息。

我们定义一个函数, 该函数包含实际为我们完成工作的生成器。

# Yields successive 'n' sized chunks from list 'list_name'
def create_chunks(list_name, n):
    for i in range(0, len(list_name), n):
        yield list_name[i:i + n]

# Call the 'create_chunks' function to divide the list further into sub-lists of 10 items each
print(list(create_chunks(list_numbers, 10)))
[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [11, 12, 13, 14, 15, 16, 17, 18, 19, 20], [21, 22, 23, 24, 25, 26, 27, 28, 29, 30], [31, 32, 33, 34, 35, 36, 37, 38, 39, 40], [41, 42, 43, 44, 45, 46, 47, 48, 49, 50], [51, 52, 53, 54, 55, 56, 57, 58, 59, 60], [61, 62, 63, 64, 65, 66, 67, 68, 69, 70], [71, 72, 73, 74, 75, 76, 77, 78, 79, 80], [81, 82, 83, 84, 85, 86, 87, 88, 89, 90], [91, 92, 93, 94, 95]]

另一种方法是仅使用列表理解。你可以在srcmini的Python列表理解教程中了解更多有关它的信息。

print([list_numbers[i: i+10] for i in range(0, len(list_numbers), 10)])
[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [11, 12, 13, 14, 15, 16, 17, 18, 19, 20], [21, 22, 23, 24, 25, 26, 27, 28, 29, 30], [31, 32, 33, 34, 35, 36, 37, 38, 39, 40], [41, 42, 43, 44, 45, 46, 47, 48, 49, 50], [51, 52, 53, 54, 55, 56, 57, 58, 59, 60], [61, 62, 63, 64, 65, 66, 67, 68, 69, 70], [71, 72, 73, 74, 75, 76, 77, 78, 79, 80], [81, 82, 83, 84, 85, 86, 87, 88, 89, 90], [91, 92, 93, 94, 95]]

随着问题变得越来越复杂, 列表理解语句的理解和调试也越来越复杂。因此, 编写干净的函数(例如使用生成器)可能会更加有用, 并且更易于跟踪。

在本教程中, 你学到了两种方法来解决列表时的常见问题。查看srcmini的数据科学数据类型课程。

赞(0)
未经允许不得转载:srcmini » Python列表:划分为给定大小的块

评论 抢沙发

评论前必须登录!