评估嵌套循环

时间:2020-02-07 06:29:42

标签: python arrays loops

我正在尝试评估此嵌套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。请注意,这个问题不是家庭作业,而是我自己的独立学习。

3 个答案:

答案 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=3y=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]]