|
|
你的问题在于:break 只跳出内层循环,外层 for 没有被中断,所以外层循环总是正常结束,else 就必然执行。
要控制它,找到相同元素后让外层也 break 即可。最简单是用 in 判断,省掉内层循环:
- a = [66, 2, 3]
- b = [1, 2, 66]
- for c in a:
- if c in b:
- print(c)
- break
- else:
- print('none')
复制代码
如果 b 很大,先把 b 转成集合,查找更快:
- b_set = set(b)
- for c in a:
- if c in b_set:
- print(c)
- break
- else:
- print('none')
复制代码
如果你想打印所有共同元素,没有则打印 none,最简洁的是用集合交集:
- common = set(a) & set(b)
- if common:
- for x in common:
- print(x)
- else:
- print('none')
复制代码
注意:集合会去重且不保证顺序。如果元素有重复且需要保持顺序,可以用 seen 集合辅助判断。
你原来的双重循环也可以加一个 found 标志,找到后外层也 break,但不如上面的写法简洁。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|