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

Python 3.11.1是否提供类似C++ string::find_first_not_of或Fortran NCPOS的内置函数?

Python 3.11.1是否提供类似C++ string::find_first_not_of或Fortran NCPOS的内置函数?

嘿,好问题!Python 3.11.1本身并没有直接对应C++ string::find_first_not_of或Fortran NCPOS的内置字符串方法,但实现这个功能其实很简单,有几种靠谱的方式:

方法一:手动遍历实现(直观易懂)

这种方式逻辑清晰,适合新手理解,也方便根据需求调整:

def ncpos(s, chars, start=0):
    # 从指定的start位置开始遍历字符串
    for i in range(start, len(s)):
        # 检查当前字符是否不在目标字符集合里
        if s[i] not in chars:
            return i
    # 如果从start到字符串末尾全是目标字符,返回-1表示未找到
    return -1

用你给出的例子测试:

pos = ncpos("   012345   hello", " eh", 10)
print(pos)  # 输出14,和预期一致

方法二:生成器表达式+next函数(简洁一行式)

如果喜欢更紧凑的代码,可以用生成器配合next函数实现,同样能达到效果:

def ncpos(s, chars, start=0):
    # 从start位置开始枚举字符和对应索引,找第一个不在chars里的索引
    return next((i for i, c in enumerate(s[start:], start) if c not in chars), -1)

这个实现和第一种逻辑本质一样,只是用生成器表达式简化了循环写法,next的第二个参数-1是找不到符合条件字符时的默认返回值。

日常使用中,两种方法都能满足需求,如果是处理超大量字符串的场景,手动遍历的性能会略胜一筹,但对于大多数场景来说,两者差异可以忽略。

备注:内容来源于stack exchange,提问作者Jason C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 08:34:33