我正在尝试评估此嵌套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。请注意,这个问题不是家庭作业,而是我自己的独立学习。
答案 0 :(得分:1)
查看流程的最好方法是修改代码
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']]
答案 1 :(得分:1)
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乘积给出的元素。
答案 2 :(得分:0)
这是通话清单理解。 python提供了一个非常有用的编码方法。它的工作方式与其他嵌套循环完全相同。也许这部分代码可以使您更好地理解。
lst = [[i * j代表范围(y)中的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]]