繁体   English   中英

python中for循环的区别

[英]differences in for loops in python

有人可以解释为什么这两个循环看起来像在做相同的事情,而实际上第二个版本却找不到正确的重复编号吗?

list1 = [1,2,13,4,6,6,8,11,10]

for i in range(len(list1)):
    for j in range(i+1, len(list1)):
            if list1[i] == list1[j]:
                print i, j
                print True
            else:
                print False
print "--------------------------------------"

for i in list1:
    for j in list1:
        if i == j + 1:
            print True, i, j
        else:
            print False

他们根本不会做同一件事。 第二个循环遍历内部循环中的整个list1,而不仅仅是从当前索引开始。 并且,由于某种原因,您在比较之前将1加到值上,所以它不是相等的。

for i in range(len(list1)):
    for j in range(i+1, len(list1)):
            if list1[i] == list1[j]:
                print i, j
                print True
            else:
                print False

上面的代码遍历一个由range()函数生成的列表,该函数在第一个循环中返回一个在您的情况下为[0,1,2,....,len(list1) - 1]的数字列表。
在第二个循环中,您要遍历的列表为[i + 1, i + 2, i + 3,...,len(list1) - 1]
在每次迭代中, ij都被分配给列表的一项,就像普通的for循环(Java,C#,C ++等)一样。


for i in list1:
    for j in list1:
        if i == j + 1:
            print True, i, j
        else:
            print False

在此代码中,将ij分配给list1每个项目
在每次迭代中, ij将分配给列表中的下一个项目值,而不是POSITION
在你的情况i值将是1然后2然后13 ......同样适用于j

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM