每次迭代如何以+ 1开始for循环?

时间:2019-12-30 09:08:59

标签: python

我有两个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循环的一次迭代。

4 个答案:

答案 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