Python 使用反向范围变量的嵌套循环
我想使用变量更改此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
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]