|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
如果在迭代中嵌套迭代,分别命名为i j 和命名为 i i 是不同的,希望有大佬能够帮我解答下原理:
- >>> a = [1, 2, 3]
- >>> b = [1, 3, 2, 1]
- >>> for i in range(len(a)) :
- for j in range(len(b)):
- if a[i] == b[i]:
- print (a[i],b[i])
-
- 1 1
- 1 1
- 1 1
- 1 1
复制代码
- >>> a = [1, 2, 3]
- >>> b = [1, 3, 2, 1]
- >>> for i in range(len(a)) :
- for i in range(len(b)):
- if a[i] == b[i]:
- print (a[i],b[i])
-
- 1 1
- Traceback (most recent call last):
- File "<pyshell#12>", line 3, in <module>
- if a[i] == b[i]:
- IndexError: list index out of range
复制代码
多层for循环迭代的话,内层的迭代名称不能与外层一样,否则内层的迭代名称名称会覆盖外层的迭代名称。
也就是说你的程序中两层都用的是i的话,外层的作用就仅仅是把内层循环原封不动的重复执行了几次。
另外你的循环体内语句是判断a[i]==b[i],那没必要双层循环啊
- a = [1, 2, 3]
- b = [1, 3, 2, 1]
- for i in range(min(len(a),len(b))):#这里取两个列表长度较小的一个
- if a[i]==b[i]:
- print(a[i],b[i])
复制代码
不过我看你的程序可能是想从列表b中找和列表a中元素相等的元素吧
那么if判断的条件需要改一下
- a = [1, 2, 3]
- b = [1, 3, 2, 1]
- for i in range(len(a)) :
- for j in range(len(b)):
- if a[i] == b[j]:
- print (a[i],b[j])
复制代码
|
|