[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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值