[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
相关文章
|
24天前
|
Python
Python技术解析:了解数字类型及数据类型转换的方法。
在Python的世界里,数字并不只是简单的数学符号,他们更多的是一种生动有趣的语言,用来表达我们的思维和创意。希望你从这个小小的讲解中学到了有趣的内容,用Python的魔法揭示数字的奥秘。
63 26
|
14天前
|
JSON 数据格式 Python
解决Python requests库POST请求参数顺序问题的方法。
总之,想要在Python的requests库里保持POST参数顺序,你要像捋顺头发一样捋顺它们,在向服务器炫耀你那有条不紊的数据前。抓紧手中的 `OrderedDict`与 `json`这两把钥匙,就能向服务端展示你的请求参数就像经过高端配置的快递包裹,里面的商品摆放井井有条,任何时候开箱都是一种享受。
36 10
|
22天前
|
Python
Python 中__new__方法详解及使用
__new__ 是 Python 中用于创建类实例的静态方法,在实例化对象时优先于 __init__ 执行。它定义在基础类 object 中,需传递 cls 参数(表示当前类)。__new__ 可决定是否使用 __init__ 方法或返回其他对象作为实例。特性包括:1) 在实例化前调用;2) 始终为静态方法。示例中展示了其用法及 Python2 和 Python3 的差异,强调了参数处理的不同。
81 10
|
22天前
|
人工智能 Ruby Python
python__init__方法笔记
本文总结了Python中`__init__`方法的使用要点,包括子类对父类构造方法的调用规则。当子类未重写`__init__`时,实例化会自动调用父类的构造方法;若重写,则需通过`super()`或直接调用父类名称来显式继承父类初始化逻辑。文中通过具体代码示例展示了不同场景下的行为及输出结果,帮助理解类属性与成员变量的关系,以及如何正确使用`super()`实现构造方法的继承。
|
3月前
|
机器学习/深度学习 存储 设计模式
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。
|
1月前
|
数据采集 安全 BI
用Python编程基础提升工作效率
一、文件处理整明白了,少加两小时班 (敲暖气管子)领导让整理100个Excel表?手都干抽筋儿了?Python就跟铲雪车似的,哗哗给你整利索!
64 11
|
3月前
|
人工智能 Java 数据安全/隐私保护
[oeasy]python081_ai编程最佳实践_ai辅助编程_提出要求_解决问题
本文介绍了如何利用AI辅助编程解决实际问题,以猫屎咖啡的购买为例,逐步实现将购买斤数换算成人民币金额的功能。文章强调了与AI协作时的三个要点:1) 去除无关信息,聚焦目标;2) 将复杂任务拆解为小步骤,逐步完成;3) 巩固已有成果后再推进。最终代码实现了输入验证、单位转换和价格计算,并保留两位小数。总结指出,在AI时代,人类负责明确目标、拆分任务和确认结果,AI则负责生成代码、解释含义和提供优化建议,编程不会被取代,而是会更广泛地融入各领域。
116 28
|
3月前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
3月前
|
Python
[oeasy]python074_ai辅助编程_水果程序_fruits_apple_banana_加法_python之禅
本文回顾了从模块导入变量和函数的方法,并通过一个求和程序实例,讲解了Python中输入处理、类型转换及异常处理的应用。重点分析了“明了胜于晦涩”(Explicit is better than implicit)的Python之禅理念,强调代码应清晰明确。最后总结了加法运算程序的实现过程,并预告后续内容将深入探讨变量类型的隐式与显式问题。附有相关资源链接供进一步学习。
58 4
|
3月前
|
设计模式 机器学习/深度学习 前端开发
Python 高级编程与实战:深入理解设计模式与软件架构
本文深入探讨了Python中的设计模式与软件架构,涵盖单例、工厂、观察者模式及MVC、微服务架构,并通过实战项目如插件系统和Web应用帮助读者掌握这些技术。文章提供了代码示例,便于理解和实践。最后推荐了进一步学习的资源,助力提升Python编程技能。

热门文章

最新文章

推荐镜像

更多