Python 使用反向范围变量的嵌套循环

Python 使用反向范围变量的嵌套循环,python,range,Python,Range,我想使用变量更改此python代码 for i in reversed(range(10)): for j in reversed(range(10)): print(i, j) 但是,上述两个for循环都用9修复了i 为什么会出现此问题?我如何修复它?反向生成一个迭代器,在它耗尽之前只能迭代一次。但是,您的内部循环尝试在r2上迭代多次,因此即使i从9一直到0,内部循环也只能生成一次实际数字 在j循环中重新创建迭代器: r = reversed(range(10)) f

我想使用变量更改此python代码

for i in reversed(range(10)):
    for j in reversed(range(10)):
        print(i, j)
但是,上述两个for循环都用9修复了
i


为什么会出现此问题?我如何修复它?

反向
生成一个迭代器,在它耗尽之前只能迭代一次。但是,您的内部循环尝试在
r2
上迭代多次,因此即使
i
从9一直到0,内部循环也只能生成一次实际数字

j
循环中重新创建迭代器:

r = reversed(range(10))
for i in r:
    for j in r:
        print(i, j)

r1 = reversed(range(10))
r2 = reversed(range(10))      
for i in r1:
    for j in r2:
        print(i, j)
或者先创建一个列表副本,可以重复多次:

r1 = reversed(range(10))
for i in r1:
    r2 = reversed(range(10))      
    for j in r2:
        print(i, j)
更好的选择是使用:


product()
根据需要创建内部副本。

reversed
生成迭代器,只能在迭代器耗尽之前迭代一次。但是,您的内部循环尝试在
r2
上迭代多次,因此即使
i
从9一直到0,内部循环也只能生成一次实际数字

j
循环中重新创建迭代器:

r = reversed(range(10))
for i in r:
    for j in r:
        print(i, j)

r1 = reversed(range(10))
r2 = reversed(range(10))      
for i in r1:
    for j in r2:
        print(i, j)
或者先创建一个列表副本,可以重复多次:

r1 = reversed(range(10))
for i in r1:
    r2 = reversed(range(10))      
    for j in r2:
        print(i, j)
更好的选择是使用:


product()
根据需要创建一个内部副本。

您可以尝试其他方法来反转列表(因为
反转的
返回生成器-所以您可以只对其迭代一次):

r=范围(10)[:-1]

对于r中的i:
对于r中的j:
打印(i,j)


range(10)
返回一个列表,所以您可以使用
slice
[:-1]尝试其他方法来反转列表(因为
reversed
返回生成器-所以您可以只对其进行一次迭代):

r=范围(10)[:-1]

对于r中的i:
对于r中的j:
打印(i,j)

range(10)
返回一个列表,因此您可以使用
slice
[:-1]