课程
列表是 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 索引,这意味着在未指定 start 时,列表的索引从 0 开始,而不是从 1 开始。
现在,假设您需要将这个列表拆分为更小的列表,每个包含 5 个元素。
一种做法是定义一个生成器。生成器是定义迭代器的一种优雅方式。什么是迭代器?简单来说,迭代器是一个对象,它知道如何计算并返回您正在遍历的对象中的下一个元素。您可以在 DataCamp 的 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]]
另一种做法是直接使用列表推导式。您可以在 DataCamp 的 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]]
随着问题变复杂,列表推导式会越来越难以理解和调试。因此,像这种使用生成器的清晰函数,往往更实用,也更容易维护。
在本教程中,您学习了两种解决处理列表时常见问题的方法。欢迎查看 DataCamp 的 数据科学的数据类型课程。