<p>最简单的方法就是检查<code>"Couple A"</code>行,并在适当的时候使用<code>ScoreList1</code>代替它的值:</p>
<pre><code>ScoreList1= ['04', '05', '01', '07', '08']
nestedList = [["Judge", "01", "02", "03", "04", "05"],
["Couple A", "10", "06", "03", "04", "05"],
["Couple B", "01", "02", "03", "04", "05"],
["Couple C", "07", "10", "03", "04", "05"],
["Couple D", "01", "02", "10", "04", "05"],]
for item in nestedList:
row = item[:1] + ScoreList1 if item[0] == "Couple A" else item
print( ": " + row[0] + " "*(9-len(row[0]))
+ ": " + row[1] + " "*(3-len(row[1]))
+ ": " + row[2] + " "*(3-len(row[2]))
+ ": " + row[3] + " "*(3-len(row[3]))
+ ": " + row[4] + " "*(3-len(row[4]))
+ ": " + row[5] + " "*(3-len(row[5])))
</code></pre>
<p>由于您指出现在希望按顺序打印每个子列表的元素,<code>print()</code>参数的构造可以简化:</p>
<pre><code>for item in nestedList:
row = item[:1] + ScoreList1 if item[0] == "Couple A" else item
print(": {:<8} ".format(row[0])
+ "".join(": {:<2} ".format(field) for field in row[1:]))
</code></pre>
<p>要扩展它来处理两个或多个替换,而您可以这样做:</p>
<pre><code>ScoreList1= ['04', '05', '01', '07', '08']
ScoreList2= ['07', '02', '01', '02', '08']
for item in nestedList:
row = (item[:1] + ScoreList1 if item[0] == "Couple A" else
item[:1] + ScoreList2 if item[0] == "Couple B" else item) # etc, etc
print(": {:<8} ".format(row[0])
+ "".join(": {:<2} ".format(field) for field in row[1:]))
</code></pre>
<p>然而,这种方法很容易变得笨拙,而且如果要处理的问题多于几个,那么它也会变得相对缓慢,因此让流程“表驱动”(使用所谓的<a href="https://en.wikipedia.org/wiki/Control_table" rel="nofollow noreferrer">Control Table</a>)并编写一次处理所有案例的代码(而不是为每个案例编写小片段)会更好更快:</p>
<pre><code>substitutions = {"Couple A": ScoreList1, "Couple B": ScoreList2}
for item in nestedList:
row = item[:1] + substitutions.get(item[0], item[1:])
print(": {:<8} ".format(row[0])
+ "".join(": {:<2} ".format(field) for field in row[1:]))
</code></pre>