<p>一种方法是创建一个<a href="https://docs.python.org/3/tutorial/datastructures.html#dictionaries" rel="nofollow noreferrer">dictionary</a>,为每个字母存储给定表的列:</p>
<pre class="lang-py prettyprint-override"><code>n = 3
list1 = [1, 5, 2, 3, 1, 3, 1, 3, 0, 0, 5, 1]
list2 = ['A', 'B', 'C', 'D', 'E', 'F']
table = dict()
for i, letter in enumerate(list2):
start = max(0, n * (i - n + 1))
end = min(len(list1), n * (i + 1))
table[letter] = [None] * start \
+ list1[start:end] \
+ [None] * (len(list1) - end)
print(table)
</code></pre>
<p>哪个输出</p>
<pre><code>{'A': [1, 5, 2, None, None, None, None, None, None, None, None, None], 'B': [1, 5, 2, 3, 1, 3, None, None, None, None, None, None], 'C': [1, 5, 2, 3, 1, 3, 1, 3, 0, None, None, None], 'D': [None, None, None, 3, 1, 3, 1, 3, 0, 0, 5, 1], 'E': [None, None, None, None, None, None, 1, 3, 0, 0, 5, 1], 'F': [None, None, None, None, None, None, None, None, None, 0, 5, 1]}
</code></pre>
<p>使用<em>漂亮的打印</em>,可以重新创建给定的表:</p>
<pre class="lang-py prettyprint-override"><code>print(' ' + ' '.join(list2))
for i in range(len(list1)):
line = ""
for letter in list2:
s = table[letter][i]
line += f"{s:2d}" if s is not None else " "
print(line)
</code></pre>
<p>哪张照片</p>
<pre><code> A B C D E F
1 1 1
5 5 5
2 2 2
3 3 3
1 1 1
3 3 3
1 1 1
3 3 3
0 0 0
0 0 0
5 5 5
1 1 1
</code></pre>