Python 如何确定嵌套列表的外部循环和内部循环?

Python 如何确定嵌套列表的外部循环和内部循环?,python,list-comprehension,Python,List Comprehension,我尝试使用python中的嵌套理解从Reddit解决这个实践问题: 对于所有数字1-1000,使用嵌套列表/字典 要找到最高的一位数,任何数字都可以被整除 我提出的解决方案是: div_sing_dig = {i:j for i in range(1,1001) for j in range(1,10) if i%j==0} print(div_sing_dig) 当我搜索其他可能的解决方案时,我发现: div_sing_dig_git = {i:max([j for j in range(1

我尝试使用python中的嵌套理解从Reddit解决这个实践问题:

对于所有数字1-1000,使用嵌套列表/字典 要找到最高的一位数,任何数字都可以被整除

我提出的解决方案是:

div_sing_dig = {i:j for i in range(1,1001) for j in range(1,10) if i%j==0}
print(div_sing_dig)
当我搜索其他可能的解决方案时,我发现:

div_sing_dig_git = {i:max([j for j in range(1,10) if i%j==0]) for i in range(1,1001)}
print(div_sing_dig_git)
在代码的第一位中,循环的第一个出现是外循环。然而,在代码的第二位中,第二个出现的是外循环。
那么,在给定嵌套列表理解的情况下,如何确定外部循环和内部循环呢?

嵌套列表理解中没有基于语法或位置的外部循环或内部循环

这完全取决于您如何对其逻辑进行编码,如下所述:

e、 g.您的第一个示例可以编码为以下任一选项:

第一个发生回路作为外回路:

div_sing_dig = {i:j for i in range(1,1001) for j in range(1,10) if i%j==0}
print(div_sing_dig)
div_sing_dig2 = {j:i for i in range(1,10) for j in range(1,1001) if j%i==0}
print(div_sing_dig2)
第二个发生回路作为外回路:

div_sing_dig = {i:j for i in range(1,1001) for j in range(1,10) if i%j==0}
print(div_sing_dig)
div_sing_dig2 = {j:i for i in range(1,10) for j in range(1,1001) if j%i==0}
print(div_sing_dig2)

两者都将给出相同的结果。

几乎
div\u sing\u dig={i:j表示范围(11001)内的i,如果i%j==0,则表示范围(1,i)内的j
。可以肯定的是,108的最大除数是54,这就是你想要的吗?深度的顺序总是你写它们的顺序。