迭代循环中i j的问题
如果在迭代中嵌套迭代,分别命名为i j 和命名为 i i 是不同的,希望有大佬能够帮我解答下原理:>>> a =
>>> b =
>>> for i in range(len(a)) :
for j in range(len(b)):
if a == b:
print (a,b)
1 1
1 1
1 1
1 1
>>> a =
>>> b =
>>> for i in range(len(a)) :
for i in range(len(b)):
if a == b:
print (a,b)
1 1
Traceback (most recent call last):
File "<pyshell#12>", line 3, in <module>
if a == b:
IndexError: list index out of range
Python没有那么智能,你的两个循环的变量都是i的话,在最里层循环,外层循环的i就被里层循环的i替换掉了
a =
b =
for i in range(len(a)):# i1
# 这里写i的话代表i1
for i in range(len(b)):# i2
# 这里写i的话就代表i2
if (a == b):# 因为这里i(i2)是从0到3(b的长度 - 1),所以如果i == 3的时候,a就会越界(因为a最大是a)
print(a, b) 多层for循环迭代的话,内层的迭代名称不能与外层一样,否则内层的迭代名称名称会覆盖外层的迭代名称。
也就是说你的程序中两层都用的是i的话,外层的作用就仅仅是把内层循环原封不动的重复执行了几次。
另外你的循环体内语句是判断a[i]==b[i],那没必要双层循环啊
a =
b =
for i in range(min(len(a),len(b))):#这里取两个列表长度较小的一个
if a==b:
print(a,b)
不过我看你的程序可能是想从列表b中找和列表a中元素相等的元素吧
那么if判断的条件需要改一下
a =
b =
for i in range(len(a)) :
for j in range(len(b)):
if a == b:
print (a,b)
页:
[1]