假设嵌套数组的长度都相同,您可以这样做:
from collections import defaultdict
result = defaultdict(str)
your_array = [[1, 1, 1, 1, 1, 1, 1, 1, 1], [2, 2, 2, 2, 2, 2, 2, 2, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3], [4, 4, 4, 4, 4, 4, 4, 4, 4], [5, 5, 5, 5, 5, 5, 5, 5, 5], [6, 6, 6, 6, 6, 6, 6, 6, 6], [7, 7, 7, 7, 7, 7, 7, 7, 7], [8, 8, 8, 8, 8, 8, 8, 8, 8], [9, 9, 9, 9, 9, 9, 9, 9, 9]]
for n in range(len(your_array[0])):
for i in range(len(your_array)):
result[n] += ' ' if i%3 == 0 else ''
result[n] += str(your_array[i][n])
for line, j in result.items():
if line % 3 == 0:
print('')
print(j)
输出:
123 456 789
123 456 789
123 456 789
123 456 789
123 456 789
123 456 789
123 456 789
123 456 789
123 456 789
评论更新
defaultdict 在这里只是一个便利类,所以它是完全可选的。没有 defaultdict 的相同代码如下所示:
result = {}
your_array = [[1, 1, 1, 1, 1, 1, 1, 1, 1], [2, 2, 2, 2, 2, 2, 2, 2, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3], [4, 4, 4, 4, 4, 4, 4, 4, 4], [5, 5, 5, 5, 5, 5, 5, 5, 5], [6, 6, 6, 6, 6, 6, 6, 6, 6], [7, 7, 7, 7, 7, 7, 7, 7, 7], [8, 8, 8, 8, 8, 8, 8, 8, 8], [9, 9, 9, 9, 9, 9, 9, 9, 9]]
for n in range(len(your_array[0])):
for i in range(len(your_array)):
if n not in result:
result[n] = ''
result[n] += ' ' if i%3 == 0 else ''
result[n] += str(your_array[i][n])
for line, j in result.items():
if line % 3 == 0:
print('')
print(j)
此外,如果您想按照下面的建议使用 zip,您的代码将简化为:
your_array = [[1, 1, 1, 1, 1, 1, 1, 1, 1], [2, 2, 2, 2, 2, 2, 2, 2, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3], [4, 4, 4, 4, 4, 4, 4, 4, 4], [5, 5, 5, 5, 5, 5, 5, 5, 5], [6, 6, 6, 6, 6, 6, 6, 6, 6], [7, 7, 7, 7, 7, 7, 7, 7, 7], [8, 8, 8, 8, 8, 8, 8, 8, 8], [9, 9, 9, 9, 9, 9, 9, 9, 9]]
your_array = zip(*your_array)
for idx, sub_array in enumerate(your_array):
result_str = ''
for sub_idx, value in enumerate(sub_array):
result_str += ' ' if sub_idx%3 == 0 else ''
result_str += str(value)
if idx % 3 == 0:
print('')
print(result_str)