评估嵌套的For循环

问题描述 投票:-1回答:3

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

python arrays loops
3个回答
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
投票
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的乘积给出的元素。


0
投票

这是通话清单理解。 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]]

© www.soinside.com 2019 - 2024. All rights reserved.