在 Python 中将列表拆分为子列表

本教程将讨论在 Python 中将列表拆分为子列表。

使用 Python 中的列表推导和列表切片将列表拆分为子列表

在 Python 中,列表推导可以从现有的可迭代对象(如列表、元组等)创建新列表。列表切片可以访问 Python 中的一系列列表元素。

我们可以使用列表切片和列表推导从先前存在的单个大列表中创建多个新的小列表。我们只需要指定所有小列表的长度。

使用此方法,如果剩余元素小于指定长度,它们会自动被推入最后一个小列表。以下代码片段演示了此方法在 Python 中的工作实现。

original_data = ['This', 'is', 'the', 'original', 'list', 'of', 'data', 'or', 'the', 'original', 'data', 'list']
split_lists = [original_data[x:x+3] for x in range(0, len(original_data), 3)]
print(split_lists)

输出:

[['This', 'is', 'the'], ['original', 'list', 'of'], ['data', 'or', 'the'], ['original', 'data', 'list']]

我们在 original_data 中创建了一个包含 12 个元素的列表,将其拆分为长度为 3 的较小列表,并将结果列表存储到 split_lists 中。我们使用 x:x+3 作为列表切片的值范围,其中 x 是介于 0 和 original_data 列表的总长度之间的值。

变量 x 增加了 3,因为我们已经在 range() 函数中指定了它。

在输出中,我们得到 4 个包含 3 个元素的小列表。

使用 NumPy 中的 array_split() 函数将列表拆分为子列表

NumPy 库中的 array_split() 方法 也可以将一个大数组拆分为多个小数组。

该函数获取原始数组和我们需要将数组拆分成的块数,并返回拆分后的块。如果我们将列表而不是数组作为输入参数传递,则此方法可以正常工作。

以下代码片段演示了此方法在 Python 中的工作实现。

import numpy as np
original_data = ['This', 'is', 'the', 'original', 'list', 'of', 'data', 'or', 'the', 'original', 'data', 'list']
pieces = 4
new_arrays = np.array_split(original_data, pieces)
print(new_arrays)

输出:

[array(['This', 'is', 'the'], dtype='<U8'), array(['original', 'list', 'of'], dtype='<U8'), array(['data', 'or', 'the'], dtype='<U8'), array(['original', 'data', 'list'], dtype='<U8')]

我们在 original_data 中初始化了一个包含 12 个元素的列表,就像我们在前面的示例中所做的那样。然后,我们使用 pieces 变量指定我们想要将列表划分为的片段数。

我们将 original_data 和 pieces 作为输入参数传递给 array_split() 函数,并将结果存储到 new_arrays 中。

最后,我们打印了 new_arrays 中的值。输出显示 4 个小列表,每个列表包含 3 个元素。