[oeasy]python093_find方法_指数为负数_index_实际效果
find方法_指数为负数_index_实际效果 回忆
  • 上次了解了eval函数
  • 根据本地和全局的变量
  • 将 source
  • 衡量 (evaluate)出来
 
 
 
添加图片注释,不超过 140 字(可选)
 
  • 要特别注意
  • 类名 str、int、list 不能作为变量名
  • 那样 会 覆盖掉 类
 
 
 
添加图片注释,不超过 140 字(可选)
 
  • 字符串 中 索引值 可以 是 负数
  • 列表中 索引值 可以是 负数吗?🤔
 
负数索引 char_list = list("oeasy") char_list[-1]
  • "o" 是 第0个 元素
  • 第0个 再减1
  • 等于 -1
 
 
 
 
添加图片注释,不超过 140 字(可选)
 
  • 最后1个元素"y"
  • 首尾相连的话
  • 挨着 第0个
  • 方向相反
  • 所以 索引为 -1
 
 
继续遍历
  • 再往前1个元素
  • 索引为-2
 
 
 
添加图片注释,不超过 140 字(可选)
 
  • 那负数索引
  • 怎么理解?🤔
 
 
 
添加图片注释,不超过 140 字(可选)
负数索引 char_list = list("oeasy") char_list.index("y")
  • "y"的索引为 4
 
 
添加图片注释,不超过 140 字(可选)
 
  • 长度 len(l)为 5
char_list.index("y") - len(char_list) char_list[char_list.index("y") - len(char_list)]
  • y的索引值 - 字符串的长度
  • 4 - 5
  • 得到 -1
 
 
 
添加图片注释,不超过 140 字(可选)
 
  • 负数索引 可以 理解为
  • 正索引 减去 长度
 
索引列表
  • 可以根据索引号
  • 得到相应的字符
 
0
1
2
3
4
o
e
a
s
y
-5
-4
-3
-2
-1
  • 如果 index方法 查找的是
  • 不存在的 列表项 呢?
 
不存在的 char_list = list("oeasy") char_list.index("k")
  • "k" 在 char_list 中并不存在
  • 系统报错
  • 值错误
 
 
 
添加图片注释,不超过 140 字(可选)
 
  • 如果列表里
  • 对应两个列表项 呢?
 
两个匹配 char_list = list("oeasyo2z") char_list.index("o")
  • char_list中有两个'o'
 
 
添加图片注释,不超过 140 字(可选)
 
  • 如果 有两个列表项 和 参数匹配
  • index 只会找到 第一个列表项的 索引
 
  • 如何找到 第二个列表项 呢?
范围匹配 help(list)
  • index方法有三个参数
  • value
  • start
  • stop
 
 
 
添加图片注释,不超过 140 字(可选)
 
  • 默认匹配 first 第一个
  • 可以控制 start
  • start 是 开始位置
 
 
  • 想要 匹配第2个
参数
  • 从第 0 个元素的位置开始找
  • 找到第0项
 
 
 
添加图片注释,不超过 140 字(可选)
 
  • 从第 1 个元素的位置开始找
  • 也就是从 e 开始
  • 前面的 o 就不算数了
  • 找到第 5 项
 
  • start 是包含本身的
  • stop 如何理解呢?
stop
  • stop
  • 结束位置
 
 
 
添加图片注释,不超过 140 字(可选)
 
  • start 和 stop 前闭后开
  • stop 的位置本身是不被包含的
  • 就像 range 的构造函数一样
 
 
 
添加图片注释,不超过 140 字(可选)
 
  • stop 默认值是多少?🤣
最大结束位置
  • stop 默认值 非常大的 一个数
 
 
添加图片注释,不超过 140 字(可选)
 
  • 具体多大呢?
转化 bin(9223372036854775807) len(bin(9223372036854775807)) len(bin(9223372036854775807)) - 2 + 1
  • 用bin把这数字转化为二进制形态
 
 
添加图片注释,不超过 140 字(可选)
 
  • 总共63个1
  • 说明 最大正数 是 63个1
  • 除了正数之外 还有负数
  • 说明这个 数据的存储 需要
  • 64-bits
  • 8-bytes
 
  • 这是 8-bytes 有符号正数的最大值
  • 能建立比这个范围还大的列表吗?
 
崩溃了 list(range(9223372036854775807)) list(range(9223372036854775808))
  • 好像崩溃了啊
  • 😁哈哈哈哈
  • OverflowError
 
 
 
添加图片注释,不超过 140 字(可选)
 
  • 如何理解OverFlow呢?
overflow
  • overflow
  • over超过
  • flow 流出
  • 溢出
 
 
 
添加图片注释,不超过 140 字(可选)
 
  • 索引函数index 的 结束位置参数
  • 超过了 8-bytes 所能容纳数字的极限
  • 发生了溢出
 
  • 索引 有什么具体应用 吗?
遍历小时数
  • 遍历所有的小时数
 
 
添加图片注释,不超过 140 字(可选)
 
  • 生成一个列表
  • 0x3358的意思是(3358)16进制
 
 
 
添加图片注释,不超过 140 字(可选)
 
  • 运行结果
 
 
添加图片注释,不超过 140 字(可选)
朝九晚五
 
 
添加图片注释,不超过 140 字(可选)
 
  • 我想
  • 把9点变成绿色
  • 把17点变成红色
 
变色 l_hours = [] for n in range(0x3358, 0x3358+24): l_hours.append(chr(n)) l_hours[9] = "\33[42m" + chr(0x3358 + 9) + "\33[0m" l_hours[17] = "\33[41m" + chr(0x3358 + 17) + "\33[0m" for hour in l_hours: print(hour, end="\t")
  • 运行结果
 
 
添加图片注释,不超过 140 字(可选)
 
  • 精准替换完成
  • 除了列表list之外
  • 字符串str也可以有索引吗?
 
字符串索引
 
 
添加图片注释,不超过 140 字(可选)
 
  • 确实有
 
 
添加图片注释,不超过 140 字(可选)
 
  • 这个方法在找子字符串的索引位置
  • 和str.find很像啊
 
str.find
 
 
添加图片注释,不超过 140 字(可选)
 
  • 好像是一模一样?
查看帮助
 
 
添加图片注释,不超过 140 字(可选)
 
  • 功能一模一样
 
 
添加图片注释,不超过 140 字(可选)
 
  • 出错处理有差别
  • index 找不到子串时抛出 ValueError 错误
  • find 失败后返回 -1
 
  • 有了index
  • 为啥还要有 find呢?
 
各有各的好处
  • 各有特色
  • find 看起来比较温和
  • index 看起来更加刚猛一点
 
  • 弥乐佛 笑迎八方客
  • 负责公关
  • 香火旺
 
  • 韦陀 铁面无私
  • 负责财务审计
  • 锱珠必较
  • 严格把关
 
 
 
添加图片注释,不超过 140 字(可选)
 
  • 共处天王殿
  • 性格互补
  • 背靠背
 
总结
  • 这次了解了 列表的下标索引
  • 可以是 正数
  • 也可以是 负数
 
0
1
2
3
4
o
e
a
s
y
-5
-4
-3
-2
-1
  • 2个函数 可以
  • 根据 列表项
  • 找到 索引位置
 
函数
输入
输出
区别
index
列表项
索引值
找不到 就报ValueError
find
列表项
索引值
找不到 不报错 返回-1


posted on 2025-05-14 08:30  overmind1980  阅读(5)  评论(0)    收藏  举报