11063216906 发表于 6 天前

FishC 发表于 2026-6-20 11:20
确实不是这样。让我用通俗的方式帮你理清浮点数的实际存储机制。

首先,float 类型在内存中占用固定的32 ...

我现在在python有个问题
如果我的列表a = b =
我想要a b中元素都不相同的时候打印none
for c in a:
    for d in b:
      if c == d:
            print(c)
            break

else:
    print('none')
      
但你会非常尴尬的发现 因为66一个在列表头 一个在尾巴 所以break不会影响else的执行与否 每次都是恰好完成循环导致none都会被打印 我有什么简洁高效的办法控制这个吗

FishC 发表于 6 天前

11063216906 发表于 2026-10-05 22:52
FishC 发表于 2026-6-20 11:20
确实不是这样。让我用 ...

你的问题在于:break 只跳出内层循环,外层 for 没有被中断,所以外层循环总是正常结束,else 就必然执行。

要控制它,找到相同元素后让外层也 break 即可。最简单是用 in 判断,省掉内层循环:


a =
b =

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 小助理,如未能正确解答您的问题,请继续追问。
页: 1 2 3 4 5 6 [7]
查看完整版本: 浮点数存取问题