我是 Python 新手。所以我想用循环来完成这件事,而不需要使用像生成器这样的花哨的东西。我有两个二维数组,一个整数数组和另一个字符串数组,如下所示:
整数二维列表:
这里,dataset2d[0][0] 是表中的行数,dataset[0][1] 是列数。所以下面的二维列表有 6 行 4 列
dataset2d = [ [6, 4], [0, 0, 0, 1], [1, 0, 2, 0], [2, 2, 0, 1], [1, 1, 1, 0], [0, 0, 1, 1], [1, 0, 2, 1] ]
字符串二维列表:
partition2d = [ ['A', '1', '2', '4'], ['B', '3', '5'], ['C', '6'] ]
partition[*][0]
即第一列是一个标签。对于 A 组,1,2 和 4 是我需要从 dataset2d 中提取并应用公式的行号。所以这意味着我将读取 1,转到第 1 行dataset2d
并读取第一列值 iedataset2d[1][0]
,然后我将从 读取 2partition2d
,转到数据集 2d 的第 2 行并读取第一列 iedataset2d[2][0]
。同样,我将阅读下一篇dataset2d[4][0]
。然后我将进行一些计算,获取一个值并将其存储在一个二维列表中,然后转到 dataset2d 中的下一列以获取这些行。因此,在此示例中,读取的下一列值将是
dataset2d[1][1]
,dataset2d[2][1]
,dataset2d[4][1]
。再次进行一些计算并为该列获取一个值,然后存储它。我会这样做,直到到达dataset2d
.中的下一行
partition2d
是[B, 3, 5]
。所以我将从dataset2d[3][0]
,开始dataset2d[5][0]
。获取该列的值是一个公式。然后 realdataset2d [3][1]
等,dataset2d[5][1]
直到我到达最后一列。我这样做直到 partition2d 中的所有行都被读取。
我尝试了什么:
for partitionRow in partition2d:
for partitionCol in partitionRow:
for colDataset in dataset2d:
print dataset2d[partitionCol][colDataset]
我面临什么问题:
- partition2d 是一个字符串数组,我需要在其中跳过具有 A、B、C 等字符的第一列。
- 我只想在 partition2d 中给出的行号上迭代 dataset2d 列。所以 colDataset 应该只有在我完成该列之后才会增加。
更新1:
我正在从文本文件中读取内容,二维列表中的数据可能会有所不同,具体取决于文件内容和大小,但 file1 即 dataset2d 和 file2 即 partition2d 的结构将是相同的。
Update2:因为 Eric 询问了输出应该是什么样子。
0.842322 0.94322 0.34232 0.900009 (For A)
0.642322 0.44322 0.24232 0.800009 (For B)
这只是一个例子,数字是我随机输入的。因此,第一个数字 0.842322 是将公式应用于 dataset2d 的第 0 列的结果,即考虑第 1、2、4 行的组 A 的 dataset2d[parttionCol][0]。
第二个数字 0.94322 是对 dataset2d 的第 1 列应用公式的结果,即考虑第 1,2 4 行的 A 组的 dataset2d[partitionCol][1]。
第三个数字 0.34232 是对 dataset2d 的第 2 列应用公式的结果,即考虑了第 1,2 4 行的 A 组的 dataset2d[partitionCol][2]。同样我们得到 0.900009。
第二行中的第一个数字,即 0.642322 是将公式应用于 dataset2d 的第 0 列的结果,即考虑第 3,5 行的组 B 的 dataset2d[parttionCol][0]。等等。