我有两个for循环
jj = 0
for ii in range(filename_list.__len__()):
jj += 1
for jj in range(filename_list.__len__()):
if ii != jj:
print(str(ii) + " " + str(jj) + "\n")
print("=" * 5)
每次ii
for循环完全执行时,我希望下一个jj
for循环从之前的索引+1开始执行。
当前,输出看起来像
0 1
0 2
=====
1 0
1 2
=====
2 0
2 1
=====
但它看起来应该更像
0 1
0 2
=====
1 2
因此,对于ii
for循环的每次迭代,应该减少jj
循环的一次迭代。
答案 0 :(得分:0)
您还正在内部循环的迭代中更改jj
。试试这个:
jj = 0
for ii in range(filename_list.__len__()):
for jj in range(ii+1, filename_list.__len__()):
print(str(ii) + " " + str(jj) + "\n")
print("=" * 5)
答案 1 :(得分:0)
J+=1
确实递增j时,新值将被忽略,因为在下一行中,您告诉Python将j从零开始(range(x)
是从x到x的范围-1)
怎么样:
for ii in range(filename_list.__len__()):
for jj in range(ii + 1, filename_list.__len__()):
if ii != jj:
print(str(ii) + " " + str(jj) + "\n")
答案 2 :(得分:0)
您可以在第二个范围内插入起点,如下所示:
jj = 0
n=3
for ii in range(n):
jj += 1
for jj in range(ii,n):
if ii != jj:
print(str(ii) + " " + str(jj) + "\n")
print("=" * 5)
我将filename_list.__len__()
更改为n
您可以看到我在第二个范围内添加了ii,这意味着从ii而不是从零开始jj
答案 3 :(得分:0)
您可以从ii开始的内部for循环,因为ii在内部for的每个循环之后都以1递增:
for ii in range(filename_list.__len__()):
for jj in range(ii, filename_list.__len__()):
if ii != jj:
print(str(ii) + " " + str(jj) + "\n")
print("=" * 5)
输出:
0 1
0 2
=====
1 2