Python的双重while循环是否与Java的双重循环有所不同? 当我运行这段代码时:
i = 0
j = 1
while i < 10:
while j < 11:
print i, j
j+=1
i+=1
我得到以下输出结果:
0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10
我希望它保持循环以打印出1 0、1 1、1 2,... 2 0、2 1、2 3等。为什么它只在一次迭代后停止了?
Python的双重while循环是否与Java的双重循环有所不同? 当我运行这段代码时:
i = 0
j = 1
while i < 10:
while j < 11:
print i, j
j+=1
i+=1
j
的“初始化”移至第一个循环内部。i = 0
while i < 10:
j = 1
while j < 11:
print i, j
j+=1
i+=1
j
到达 11
时,内部循环停止执行(包括 print
语句)。在我的代码中,每次 i
改变时我重置了 j
,这样内部循环就会再次执行。因为在第一次迭代后,您的j变量变成了11。需要将其重置:
i = 0
j = 1
while i < 10:
j= 1 #<-- here
while j < 11:
print i, j
j+=1
i+=1
替代方案:
list1=list(range(0,10))
list2=list(range(0,11))
l = [(x,y) for x in list1 for y in list2]
for a in l:
for b in a:
print b,
print ""
解释:
步骤1:
存储两个列表list1=list(range(0,10))
和list2=list(range(0,11))
,以便我们知道左值和右值中期望的值。
步骤2:
获取由从list1和list2中取值生成的一对列表的所有组合的列表,并使用命令l = [(x,y) for x in list1 for y in list2]
将其存储在l中。
步骤3:
获取列表l
的每个元素。由于我们希望一对值在同一行中打印出来,因此使用print b,
。
步骤4:
要在每个连续元素之间打印下一行(\n
)字符,请使用在最后一行中显示的print ""
命令。
for i in range( 10 ):
for j in range( 1, 11 ):
print i, j
j
。 - Ozgur Vatansever