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)]