show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次了解了通过可迭代对象生成列表
- 可迭代对象包括
- 文件对象
- 字符串对象
- range函数返回结果对象
- 字节序列
- 字符串序列 s
- 可以把每个字符转化为列表项
- split 切分出列表项
- 中文无压力
- 字节流序列 byte
- 可以直接把字节流转化为相应的数字列表
- 每个列表项都是一个字节
- 如何选择每一个列表项呢?🤔
- 字符串 就是
- 把字符 串起来
- 字符串里面
- 每个字符 是 一个山楂
- 那么 由字符串生成的列表(list)
- 是否可以用索引(index)呢?
- 中括号里面
- 放索引数
- index number
- 可以 找到列表(list)中
- 第几个元素
- 从零开始
- 如果超过了列表 list 大小
- 就会报错
- 列表索引超出范围
- IndexError
- list index out range
- 为什么可以用中括号加序号找到相应的元素呢?
- 中括号应该就是
__getitem__
函数
- 可以试试吗?
- 这两个方式效果一样
- 为什么有了
__getitem__()
函数 - 还要用l[0]中括号进行索引呢?
- 为什么有了
__getitem__()
函数名字里有__
- 说明是内部方法
- 一般是不被调用的
- l[0]用起来比较方便
- 不过索引这个词究竟来自于什么来着?
- the forefinger
- 指出发现的手指
- 就是 第二根手指
- index
- 指出的手指
- 也是品尝的手指
- 食指是这个词最根本的含义
- 指数、指标都来自于食指
- 图书的目录
- 可以指出章节在第几页
- 根据序号指出元素是方式
- 就是索引
- 负数可以做列表的索引值吗?
- "o" 是 第0个 元素
- 第0个 再减1
- 等于 -1
- 最后1个元素"y"
- 索引为 -1
-
再往前1个元素
- 索引为-2
-
那负数怎么理解?
- 负数索引可以理解为
- 索引减去长度
- "y"的索引为 4
- 长度 len(l)为 5
- 所以索引既可以是 4
- 也可是 4-5
- 就是-1
- 索引减去长度
- 可以根据索引号
- 得到相应的字符
0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
o | e | a | s | y |
-5 | -4 | -3 | -2 | -1 |
- 能否反过来
- 根据相应的字符
- 得到索引呢?
- 根据相应的字符
- help(list)
- 找到这样一个索引函数
- index
- 具体得试一下
- 列表中有 5 个元素
- "o"是第几个?
-
o 是第 0 个元素
- 所以 l.index("o")是 0
-
然后先求索引再查元素
- 还是得到"o"
- 能否先查元素再求索引?
- 那么如果查找一个列表中不存在的元素呢?
- "0" 在 l 中并不存在
- 系统会报错
- 值的错误
- 如果列表里对应两个列表项呢?
- l中有两个'o'
- 如果有两个列表项和参数匹配
- 他会匹配第1个
- 但是想要 匹配第2个 怎么办?
- 查看帮助
- help(list)
- index方法有三个参数
- 默认匹配 first 第一个
- 可以控制 start
- start 是 开始位置
- 可以控制 start
- 从第 0 个元素的位置开始找
- 找到第0项
- 从第 1 个元素的位置开始找
- 也就是从 e 开始
- 前面的 o 就不算数了
- 找到第 5 项
- start 是包含本身的
- stop 如何理解呢?
- 结束位置
- start 和 stop 前闭后开
- stop 的位置本身是不被包含的
- 就像 range 的构造函数一样
- 如果两个参数都是负的
- 会如何呢?🤔
- 负数序号可以转化
- 负数序号其实可以转化成
- 对应的正数序号
- stop 的最大值是个什么情况?🤣
- 默认值非常大的一个数
- 具体是几个字节呢?
- 用bin把这数字转化为二进制形态
- 用hex把这数字转化为十六进制形态
- 这是 8 字节 long 型有符号正数的最大值
- 可能也就是能够索引的边界
- 能建立比这个范围还大的列表吗?
- 可以试试
- 好像崩溃了啊
- 😁哈哈哈哈
-
OverflowError
-
如何理解OverFlow呢?
- overflow
- over超过
- flow 流出
- 溢出
- 超过了8个字节所能容纳数字的极限
- 发生了溢出
- 导致索引函数中的结束为止不可用
- 这种索引函数可以有什么应用吗?
- 精准地瞄准某个元素
- 可以通过索引
- 进行替换
- 遍历所有的小时数
- 生成一个列表
- 0x3358的意思是(3358)16进制
- 运行结果
- 我想
- 把9点变成绿色
- 把17点变成红色
- 运行结果
- 精准替换完成
- 除了列表之外
- 字符串也可以有索引吗?
- 这个方法和str.find很像啊
- 好像是一模一样?
- 功能一模一样
- 出错处理有差别
- index 找不到子串时抛出 ValueError 错误
- find 失败后返回 -1
- find 看起来比较温和
- index 看起来更加刚猛一点
- 哪个好呢?
- 弥乐佛负责公关
- 笑迎八方客
- 于是香火大旺
- 韦陀铁面无私
- 锱珠必较
- 则让他负责财务
- 严格把关
- 共处天王殿
- 性格互补
- 背靠背
- 字符串支持用[]索引修改其中的字符吗?
- 字符串对象支持索引方式获取字符
- 但不支持通过索引修改字符串
- 但如果我就想根据索引修改字符串
- 怎么办呢?
- 通过list列表
- 曲则全
- 枉则直
- 洼则盈
- 敝则新
- 少则得
- 多则惑
- 绕路才能到达
- 收工
- 这次了解了列表的下标索引
- 可以用中括号 索引到 相应的元素
- 还可以 替换相应的元素
- 索引本质是
__getitem()__
方法
- 还可以用 index函数 找到某对象的位置
- 如果 列表中 有多个指定元素
- 可以通过 index函数的start和end参数 来指定位置
- 列表的索引 还有 什么实际的应用 吗?🤔
- 下次再说 👋