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

Python中str的index方法如何工作?下述特殊代码运行逻辑是什么?

代码逻辑拆解

你疑惑的"123456789"["8" in values:].index可以拆为三层逻辑逐次执行:

  • 第一步执行"8" in values判断:Python中布尔值本质是整数,False对应0,True对应1。你的示例values中没有"8",所以返回False也就是0。
  • 第二步执行字符串切片:切片语法str[start:]会返回从start索引到末尾的子串,这里start就是上面得到的0,所以切片结果就是原字符串"123456789"。如果values中存在"8",start就是1,切片结果为"23456789"。
  • 第三步取方法引用:.index是取切片后得到的字符串的内置index方法,赋值给index变量,后续sorted时可以直接把这个方法作为排序key调用。

str.index方法的工作原理

str.index(sub[, start[, end]])是字符串的内置查找方法,规则如下:

  • 接收要查找的子串sub作为必填参数,可选start、end参数限定查找范围,默认查询整个字符串
  • 找到子串时返回它在字符串中第一次出现的正整数索引(从0开始计数)
  • 找不到子串时直接抛出ValueError异常,这是它和str.find()的核心区别(find找不到返回-1)

整段代码的运行结果

你的示例中sorted会把values里的每个元素传入index方法,得到对应的索引:
"1"对应索引0、"3"对应索引2、"6"对应索引5、"7"对应索引6、"9"对应索引8,按索引从小到大排序后,最终输出为['1', '3', '6', '7', '9']。

如果values里包含"8",切片就会跳过第一个字符"1",此时如果values里同时有"1",调用index就会抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:45:02