回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我是Python新手。所以我想在不使用发电机之类的花哨的东西的情况下完成循环。我有两个二维数组,一个是整数数组,另一个是字符串数组,如下所示:</p>
<ol>
<li><p>整数2D列表:</p>
<p>这里,<a href="https://www.cnpython.com/pypi/dataset" class="inner-link">dataset</a>2d[0][0]是表中的行数,dataset[0][1]是列数。所以下面的2D列表有6行4列</p>
<pre><code>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]
]
</code></pre></li>
<li><p>字符串2D列表:</p>
^{pr2}$
<p><code>partition[*][0]</code>即第一列是一个标签。对于A组,1、2和4是我需要从dataset2d中提取并应用公式的行号。所以这意味着我将读取1,转到<code>dataset2d</code>中的第1行并读取第一列值,即<code>dataset2d[1][0]</code>,然后从<code>partition2d</code>读取2,转到数据集2d的第2行,读取第一列,即<code>dataset2d[2][0]</code>。类似地,下一个我将读<code>dataset2d[4][0]</code>。在</p>
<p>然后我将进行一些计算,获取一个值并将其存储在2D列表中,然后转到dataset2d中这些行的下一列。所以在这个例子中,下一列的值将是<code>dataset2d[1][1]</code>,<code>dataset2d[2][1]</code>,<code>dataset2d[4][1]</code>。再次进行计算,得到该列的一个值,存储它。我将一直这样做直到到达<code>dataset2d</code>的最后一列。在</p>
<p><code>partition2d</code>中的下一行是<code>[B, 3, 5]</code>。所以我从<code>dataset2d[3][0]</code>,<code>dataset2d[5][0]</code>开始。获取该列的值作为公式。然后是实数<code>dataset2d [3][1]</code>,<code>dataset2d[5][1]</code>等,直到我到达最后一列。我一直这样做,直到分区2d中的所有行都被读取。</p></li>
</ol>
<p>我尝试了:</p>
<pre><code> for partitionRow in partition2d:
for partitionCol in partitionRow:
for colDataset in dataset2d:
print dataset2d[partitionCol][colDataset]
</code></pre>
<p>我面临的问题是:</p>
<ol>
<li>partition2d是一个字符串数组,我需要跳过第一列,其中包含a、B、C等字符</li>
<li>我想在dataset2d中只迭代partition2d中给定的行号,因此colDataset应该只在我处理完该列之后才递增。在</li>
</ol>
<p>更新1:</p>
<p>我从一个文本文件中读取内容,2D列表中的数据可能会有所不同,这取决于文件的内容和大小,但是file1(即dataset2d)和file2(即partition2d)的结构是相同的。在</p>
<p>更新2:因为Eric询问了输出应该是什么样子。在</p>
<pre><code> 0.842322 0.94322 0.34232 0.900009 (For A)
0.642322 0.44322 0.24232 0.800009 (For B)
</code></pre>
<p>这只是一个例子,数字是我随机输入的。
因此,第一个数字0.842322是将公式应用于dataset2d第0列的结果,即考虑了第1、2、4行的A组的dataset2d[partitioncol][0]。在</p>
<p>第二个数字0.94322是将公式应用于dataset2d第1列的结果,即组A的dataset2d[partitionCol][1],考虑了第1、2和4行。在</p>
<p>第三个数字0.34232是将公式应用于dataset2d的第2列的结果,即组A的dataset2d[partitionCol][2],考虑了第1、2和4行。同样,我们得到0.900009。在</p>
<p>第二行中的第一个数字,即0.642322,是将公式应用到dataset2d第0列(即dataset2d[partitioncol][0])的结果,该列考虑了第3、5行。等等。在</p>