![](/img/trans.png)
[英]What are the differences between the two implementation of for loops in Python
[英]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]
。
在每次迭代中, i
和j
都被分配给列表的一项,就像普通的for
循环(Java,C#,C ++等)一样。
for i in list1:
for j in list1:
if i == j + 1:
print True, i, j
else:
print False
在此代码中,将i
和j
分配给list1
每个项目值 。
在每次迭代中, i
和j
将分配给列表中的下一个项目值,而不是POSITION 。
在你的情况i
值将是1
然后2
然后13
......同样适用于j
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.