Python 3.x 如何打印方阵中的数字列表?

Python 3.x 如何打印方阵中的数字列表?,python-3.x,Python 3.x,输出: l1 = [4, 8, 12,16,3,7,11,15,2,6,10,14,1,5,9,13] 未按要求的格式打印。 这里怎么了?你能帮助我吗。你可以通过以下理解列表来实现这一点: [4,8,12,16] [3,7,5,11] [1,6,10,14] [1,5,9,13] m =4 n=4 tmp = [[0]*m]*n a = 0 for i in range(m): for j in range(n): tmp[i][j] = l1[a] a

输出:

l1 = [4, 8, 12,16,3,7,11,15,2,6,10,14,1,5,9,13]
未按要求的格式打印。
这里怎么了?你能帮助我吗。

你可以通过以下理解列表来实现这一点:

[4,8,12,16]
[3,7,5,11]
[1,6,10,14]
[1,5,9,13]

m =4
n=4
tmp = [[0]*m]*n
a = 0
for i in range(m):
    for j in range(n):
       tmp[i][j] = l1[a]
       a += 1
输出


[[4,8,12,16],[3,7,11,15],[2,6,10,14],[1,5,9,13]
m
的步骤迭代初始列表,每次都将
m
元素的列表附加到最终列表中,其中
m
是每行的元素数

t=[]
对于范围(0,len(l1),m)内的i:
t、 追加(l1[i:i+m])
打印(t)

代码的问题是数组初始化部分。
tmp=[[0]*m]*n
这将创建一个公共内存地址,您对一个索引所做的任何更改都将反映到其他索引

因此,要初始化列表,可以使用以下代码

list1 = [4, 8, 12,16,3,7,11,15,2,6,10,14,1,5,9,13]
[list1[x:x+4] for x in list(range(0,len(list1),4))]

@Sebastien D

已经分享了这个简单的方法,您只需更改初始化
tmp
矩阵的方式

tmp = [[0 for _ in range(m)] for _ in range(n)]

这回答了你的问题吗?请不要只发布代码作为答案,还要解释代码的作用以及它是如何解决问题的。带解释的答案通常更有帮助,质量也更好
tmp = [[[0] for _ in range(m)] for _ in range(n)]