Python - 嵌套列表的列求和
Python 中的嵌套列表是指包含其他列表作为元素的列表。这是一种在单个列表中创建分层或多维结构的方法。内部列表本身可以包含任何类型的元素,包括其他列表。
处理多维数据(例如矩阵、表格或分层结构)时,嵌套列表非常有用。它们提供了一种灵活且便捷的方式来以结构化的方式组织和访问数据。让我们创建一个嵌套列表作为示例。
示例
在这个例子中,我们有一个包含三个内部列表的嵌套列表。每个内部列表代表一行,每个内部列表中的元素代表不同列中的值。
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print("The nested list:",nested_list)
输出
The nested list: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
嵌套列表的结构也允许更复杂的数据表示。例如,我们可以为内部列表设置不同的长度,从而创建如下所示的锯齿状或不均匀结构。
示例
nested_list = [[1, 2, 3], [4, 5], [6, 7, 8, 9]] print("The nested list with different sizes:",nested_list)
输出
The nested list with different sizes: [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
在 Python 中,为了计算嵌套列表的列求和,我们可以使用不同的方法。以下是每种方法的详细解释以及示例。
使用循环
如果我们有一个嵌套列表,其中每个内部列表代表一行,内部列表中的元素代表不同列中的值,我们可以使用循环迭代列并计算每列的和。
示例
在这个例子中,我们首先通过访问第一个内部列表的长度来计算列数`num_columns`。我们用零初始化一个列表`column_sum`来存储每列的和。然后,我们迭代嵌套列表中的每一行,对于每一行,我们迭代行中元素的索引。我们通过添加当前行中的值来更新`column_sum`中的相应元素。
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] num_columns = len(nested_list[0]) column_sum = [0] * num_columns for row in nested_list: for i in range(num_columns): column_sum[i] += row[i] print("The column sum of each of the nested lists:",column_sum)
输出
The column sum of each of the nested lists: [12, 15, 18]
使用`zip()`和列表推导式
我们可以利用zip()函数来转置嵌套列表,将每一列的值组合在一起。然后,我们可以使用列表推导式来计算每列的和。
示例
在这个例子中,zip(*nested_list)转置嵌套列表,创建一个迭代器,返回包含每列元素的元组。然后,列表推导式使用sum(column)计算每列的和,得到一个列和的列表。
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] column_sum = [sum(column) for column in zip(*nested_list)] print("The column sum of each of the nested lists:",column_sum)
输出
The column sum of each of the nested lists: [12, 15, 18]
使用NumPy
NumPy 是 Python 中用于进行科学和数学计算的最有用的库之一。NumPy 库中有一个名为sum()的函数,可以帮助计算嵌套列表的列求和。
示例
在这个例子中,我们使用np.array(nested_list)将嵌套列表转换为 NumPy 数组,其中每个内部列表代表数组中的一行。然后,我们使用np.sum(arr, axis=0)沿第一轴(即行)计算和,从而有效地得到列求和。
import numpy as np nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 10]] arr = np.array(nested_list) column_sum = np.sum(arr, axis=0) print("The column sum of each of the nested lists:",column_sum)
输出
The column sum of each of the nested lists: [12 15 19]