You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查找列表中不存在的下一个整数的Python语法问题求助

解决“找到给定整数之后首个不在指定整数列表中的整数”问题

错误原因分析

  • 生成器表达式必须遵循(x for x in 可迭代对象 if 筛选条件)的结构,你之前的写法都缺了for x in 可迭代对象这部分——Python根本不知道x要从哪里取值,自然会报语法错误。比如next(x for x not in nanIndices)里,没有指定x的遍历范围,语法逻辑不完整。
  • 你试的next(x for x in range(1,1000) and x not in nanIndices)也不对,不能把遍历范围和筛选条件用and拼接,条件必须放在if分句里。

正确实现代码

假设你要找给定整数start_num之后的首个不在nanIndices中的整数,用下面的代码:

start_num = 5  # 替换成你实际的起始整数
next(x for x in range(start_num + 1, float('inf')) if x not in nanIndices)
  • range(start_num + 1, float('inf'))会生成从起始整数的下一个数开始的无限序列,直到找到符合条件的数就停止。
  • if x not in nanIndices是核心筛选条件,确保选出的数不在目标列表里。

如果你的需求是从1开始找首个不在nanIndices中的数,只要调整range的起始值:

next(x for x in range(1, float('inf')) if x not in nanIndices)

优化建议

如果nanIndices是个很大的列表,x not in nanIndices的查找速度会很慢,建议先把列表转成集合:

nan_set = set(nanIndices)
start_num = 5
next(x for x in range(start_num + 1, float('inf')) if x not in nan_set)

集合的成员查找效率远高于列表,能大幅提升代码运行速度。

内容的提问来源于stack exchange,提问作者OtagoHarbour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:02:23