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

Python问题:如何获取if语句中any()迭代内的i变量

问题原因

你写的any()里的生成器表达式是独立的局部作用域,里面的变量i只在生成器内部生效,一旦any()执行完,这个i就没法在外面的代码里访问了,所以会触发NameError。

解决方法

方法1:用普通循环遍历(直观易读)

直接遍历字符串的每个字符和对应的索引,找到第一个匹配的就记录索引并终止循环:

chars = set('qwertyuopasdfghjklizxcvbnm!"^+%&/()=?')
myIndex = -1  # 预设没找到时的默认值
for idx, char in enumerate(myString):
    if char in chars:
        myIndex = idx
        break
# 后续可根据myIndex是否为-1判断是否找到匹配字符

方法2:用next()结合生成器(简洁高效)

利用next()直接从生成器中取出第一个满足条件的索引,同时处理没找到的情况:

chars = set('qwertyuopasdfghjklizxcvbnm!"^+%&/()=?')
try:
    myIndex = next(idx for idx, char in enumerate(myString) if char in chars)
except StopIteration:
    # 没有找到匹配字符时的处理逻辑,比如设默认值
    myIndex = -1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:10:51