众力资讯网

[oeasy]python093_find方法_指数为负数_index_实际效果

find方法_指数为负数_index_实际效果回忆上次了解了eval函数根据本地和全局的变量将 source衡量 (ev
find方法_指数为负数_index_实际效果回忆

上次了解了eval函数

根据本地和全局的变量

将 source

衡量 (evaluate)出来

要特别注意

类名 str、int、list 不能作为变量名

那样 会 覆盖掉 类

字符串 中 索引值 可以 是 负数

列表中 索引值 可以是 负数吗?🤔

负数索引

char_list = list("oeasy")char_list[-1]

"o" 是 第0个 元素

等于 -1

第0个 再减1

最后1个元素"y"

所以 索引为 -1

首尾相连的话

挨着 第0个

方向相反

继续遍历

再往前1个元素

索引为-2

那负数索引

怎么理解?🤔

负数索引

char_list = list("oeasy")char_list.index("y")

"y"的索引为 4

长度 len(l)为 5

char_list.index("y") - len(char_list)char_list[char_list.index("y") - len(char_list)]

y的索引值 - 字符串的长度

4 - 5

得到 -1

负数索引 可以 理解为

正索引 减去 长度

索引列表

可以根据索引号

得到相应的字符

01234oeasy-5-4-3-2-1

如果 index方法 查找的是

不存在的 列表项 呢?

不存在的

char_list = list("oeasy")char_list.index("k")

"k" 在 char_list 中并不存在

系统报错

值错误

如果列表里

对应两个列表项 呢?

两个匹配

char_list = list("oeasyo2z")char_list.index("o")

char_list中有两个'o'

如果 有两个列表项 和 参数匹配

index 只会找到 第一个列表项的 索引

如何找到 第二个列表项 呢?

范围匹配

help(list)

index方法有三个参数

value

start

stop

默认匹配 first 第一个

start 是 开始位置

可以控制 start

想要 匹配第2个

参数

从第 0 个元素的位置开始找

找到第0项

从第 1 个元素的位置开始找

也就是从 e 开始

前面的 o 就不算数了

找到第 5 项

start 是包含本身的

stop 如何理解呢?

stop

stop

结束位置

start 和 stop 前闭后开

stop 的位置本身是不被包含的

就像 range 的构造函数一样

stop 默认值是多少?🤣

最大结束位置

stop 默认值 非常大的 一个数

具体多大呢?

转化

bin(9223372036854775807)len(bin(9223372036854775807))len(bin(9223372036854775807)) - 2 + 1

用bin把这数字转化为二进制形态

总共63个1

说明 最大正数 是 63个1

除了正数之外 还有负数

说明这个 数据的存储 需要

64-bits

8-bytes

这是 8-bytes 有符号正数的最大值

能建立比这个范围还大的列表吗?

崩溃了

list(range(9223372036854775807))list(range(9223372036854775808))

好像崩溃了啊

😁哈哈哈哈

OverflowError

如何理解OverFlow呢?

overflow

overflow

over超过

flow 流出

溢出

索引函数index 的 结束位置参数

超过了 8-bytes 所能容纳数字的极限

发生了溢出

索引 有什么具体应用 吗?

遍历小时数

遍历所有的小时数

生成一个列表

0x3358的意思是(3358)16进制

运行结果

朝九晚五

我想

把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")

运行结果

精准替换完成

除了列表list之外

字符串str也可以有索引吗?

字符串索引

确实有

这个方法在找子字符串的索引位置

和str.find很像啊

str.find

好像是一模一样?

查看帮助

功能一模一样

出错处理有差别

index 找不到子串时抛出 ValueError 错误

find 失败后返回 -1

有了index

为啥还要有 find呢?

各有各的好处

各有特色

find 看起来比较温和

index 看起来更加刚猛一点

弥乐佛 笑迎八方客

负责公关

香火旺

韦陀 铁面无私

负责财务审计

锱珠必较

严格把关

共处天王殿

性格互补

背靠背

总结

这次了解了 列表的下标索引

可以是 正数

也可以是 负数

01234oeasy-5-4-3-2-1

有2个函数 都可以

根据 列表项

找到 索引位置

函数输入输出区别index列表项索引值找不到 就报ValueErrorfind列表项索引值找不到 不报错 返回-1

这列表 还有什么 好玩的 吗?🤔

下次再说 👋

蓝桥->https://www.lanqiao.cn/courses/3584

github->https://github.com/overmind1980/oeasy-python-tutorial

gitee->https://gitee.com/overmind1980/oeasypython