上次了解了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 如何理解呢?
stopstop
结束位置

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呢?
overflowoverflow
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