我正在尝试评估此嵌套For循环的工作方式。有人可以向我解释关于x和y输入的每次迭代i和j的值如何增加和表现吗?使用x = 3和y = 5,它如何编译?
x,y = map(int,input("Insert two digits to generate a 2-dimensional array: ").split(',')) # applies int to both numbers
lst = [[i*j for j in range(y)] for i in range(x)]
print(lst)
该问题可以在here中找到。请注意,这个问题不是家庭作业,而是我自己的独立学习。
查看此过程的最佳方法是修改您的代码
lst = [[f'i is {i}, j is {j}' for j in range(y)] for i in range(x)]
然后打印列表以查看迭代。
对于x = 3,y = 5,将显示以上内容
[['i is 0, j is 0', 'i is 0, j is 1', 'i is 0, j is 2', 'i is 0, j is 3', 'i is 0, j is 4'],
['i is 1, j is 0', 'i is 1, j is 1', 'i is 1, j is 2', 'i is 1, j is 3', 'i is 1, j is 4'],
['i is 2, j is 0', 'i is 2, j is 1', 'i is 2, j is 2', 'i is 2, j is 3', 'i is 2, j is 4']]
lst = [[i*j for j in range(y)] for i in range(x)]
[x=3
和y=5
可以改写为:
>>> res = []
>>> for i in range(3):
... l = []
... for j in range(5):
... l.append(i*j)
... res.append(l)
...
>>> res
[[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8]]
因此,实际上,您创建3个列表,每个列表包含5个由i和j的乘积给出的元素。
这是通话清单理解。 python提供了一个非常有用的编码方法。它的工作原理与其他嵌套循环完全相同。也许这部分代码可以使您更好地理解。
lst = [[i * j对于范围(x)中的j]对于i在范围(x)中]
x,y = 3,5
list1 = []
list2 = []
for j in range(y):
for i in range(x):
list1.append(i*j)
list2.append(list1)
list1 = []
print(list2)
此代码与x = 3,y = 5时的代码完全一样。
输出:
[[[0,0,0],[0,1,2],[0,2,4],[0,3,6],[0,4,8]]