Python如何在单个循环中遍历两个数组?现有写法报j未定义错误
错误根因
- 你书写的
for i in x and j in y不符合Python for循环的语法规范:and是逻辑判断运算符,不能用来在同一行for循环中分隔两个不同的遍历对象。 - 解释器解析这行代码时,会把
x and j in y整体当作布尔表达式计算。当x是非空可迭代对象时,逻辑与的短路机制会直接让循环只遍历x中的元素,完全不会执行到j in y的定义逻辑,j从未被赋值,自然触发NameError: name 'j' is not defined。
修正方案
根据实际遍历需求选择对应写法:
按索引配对遍历
如果你的需求是取x的第n个元素、y的第n个元素组成坐标对,直接用内置zip()打包两个数组即可:
for i, j in zip(x, y): if checkSquare(BpeicePosition, (i, j)) or checkSquare(WpeicePosition, (i, j)): print('yep') else: print('nope')
注意:zip()会以长度更短的数组为遍历边界,两个数组长度不一致时,更长数组的多余元素不会被遍历到。
全量组合遍历
如果你的需求是遍历x和y所有元素的两两组合(比如覆盖棋盘上所有格点的坐标),使用两层嵌套循环即可:
for i in x: for j in y: if checkSquare(BpeicePosition, (i, j)) or checkSquare(WpeicePosition, (i, j)): print('yep') else: print('nope')
内容的提问来源于stack exchange,提问作者ImagineX_Development
相关产品推荐
相关产品推荐

