如何将循环嵌套列表打印为指定格式的p*p矩阵?
问题分析与修复代码
原代码存在两个关键问题:
- 内层循环中,你直接用
l1[i] = [j,i]覆盖了外层循环创建的空列表,导致每个子列表最终只保留最后一个[j,i]元素,而不是积累所有元素。 - 示例中的矩阵行是倒序的(比如输入4时,第一行是
[3,0],[3,1]...),但原代码的i是从0到a-1递增,需要改为从a-1到0递减。
修改后的代码
方式1:修正原循环逻辑
a = int(input()) l1 = [] # 倒序遍历i,从a-1到0 for i in range(a-1, -1, -1): row = [] for j in range(a): # 向当前行添加元素[i, j] row.append([i, j]) l1.append(row) print(l1)
方式2:更简洁的列表推导式
如果想简化代码,可以用嵌套列表推导式一行搞定:
a = int(input()) l1 = [[[i, j] for j in range(a)] for i in range(a-1, -1, -1)] print(l1)
测试示例
当输入4时,输出结果为:
[[[3, 0], [3, 1], [3, 2], [3, 3]], [[2, 0], [2, 1], [2, 2], [2, 3]], [[1, 0], [1, 1], [1, 2], [1, 3]], [[0, 0], [0, 1], [0, 2], [0, 3]]]
和你给出的示例格式一致。
内容的提问来源于stack exchange,提问作者drowsycoder
相关产品推荐
相关产品推荐

