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

简介: 本文介绍了Python中`find`方法与索引(index)的使用,包括负数索引的实际效果。回顾了`eval`函数的应用,并强调类名如`str`、`int`、`list`不可用作变量名以避免覆盖。通过示例解析了负数索引在字符串和列表中的作用,以及`index`方法的三个参数(value、start、stop)的用法。同时对比了`index`和`find`方法的区别:`index`找不到子串时抛出`ValueError`,而`find`返回-1。最后总结了正负索引的使用场景及两者的特性,提供了相关学习资源链接。

find方法_指数为负数_index_实际效果

回忆

  • 上次了解了eval函数
  • 根据本地和全局的变量
  • 将 source
  • 衡量 (evaluate)出来

  • 要特别注意
  • 类名 str、int、list 不能作为变量名
  • 那样 会 覆盖掉 类

  • 字符串 中 索引值 可以 是 负数
  • 列表中 索引值 可以是 负数吗?🤔

负数索引

char_list = list("oeasy")
char_list[-1]
  • "o" 是 第0个 元素
  • 第0个 再减1
  • 等于 -1

  • 最后1个元素"y"
  • 首尾相连的话
  • 挨着 第0个
  • 方向相反
  • 所以 索引为 -1

继续遍历

  • 再往前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

  • 负数索引 可以 理解为
  • 正索引 减去 长度

索引列表

  • 可以根据索引号
  • 得到相应的字符
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 中并不存在
  • 系统报错
  • 值错误

  • 如果列表里
  • 对应两个列表项 呢?

两个匹配

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 看起来更加刚猛一点
  • 弥乐佛 笑迎八方客
  • 负责公关
  • 香火旺
  • 韦陀 铁面无私
  • 负责财务审计
  • 锱珠必较
  • 严格把关

  • 共处天王殿
  • 性格互补
  • 背靠背

总结

  • 这次了解了 列表的下标索引
  • 可以是 正数
  • 也可以是 负数
0 1 2 3 4
o e a s y
-5 -4 -3 -2 -1
  • 2个函数 可以
  • 根据 列表项
  • 找到 索引位置
函数 输入 输出 区别
index 列表项 索引值 找不到 就报ValueError
find 列表项 索引值 找不到 不报错 返回-1
相关文章
|
5月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
467 1
|
4月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
273 0
|
6月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
221 2
|
6月前
|
调度 Python
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
176 0
|
5月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
655 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
6月前
|
机器学习/深度学习 数据采集 算法
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
352 4
|
5月前
|
算法 调度 决策智能
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
150 0
|
6月前
|
机器学习/深度学习 数据采集 TensorFlow
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
311 0
|
5月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
457 102
|
5月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
393 104

推荐镜像

更多