什么叫做类比,为什么有些 Python 入门教程结构不合理?

简介: 什么叫做类比,为什么有些 Python 入门教程结构不合理?

摄影:产品经理这家店的网红脸太多了

想必关注未闻 Code的同学或多或少都在网上看过各种各样的 Python 入门教程。这些教程在讲 Python 基础数据结构的时候,一般是按照下面这个模式来讲的:

  1. 数字、字符串、浮点数
  2. 列表
  3. 字典
  4. 集合

这个结构虽然说是中规中矩由浅入深,但是它并没有让读者做到类比学习触类旁通。

所谓类比

为什么这样说呢?因为这些教程的教学模式,使得读者不容易发现字符串、列表、元组的相同之处。

我们从“读”这个角度来看看这三个数据结构。假设有一个字符串叫做a,有一个列表叫做b,有一个元组叫做c。那么大家请看如下的操作。

按索引读取元素

a[0]  # 字符串第一个字符
b[0]  # 列表第一个元素
c[0]  # 元组第一个元素
a[3]  # 字符串第4个字符
b[3]  # 列表第4个元素
c[3]  # 元组第4个元素
a[-1]  # 字符串最后一个字符
b[-1]  # 列表最后一个元素
c[-1]  # 元组最后一个元素

按索引读取元素这个操作,字符串、列表和元组完全相同。

切片

a[1: 4]  # 读取字符串第2、3、4个字符
b[1: 4]  # 读取列表第2、3、4个元素
c[1: 4]  # 读取元组第2、3、4个元素
a[: 4]  # 读取字符串前4个字符
b[: 4]  # 读取列表前4个元素
c[: 4]  # 读取元组前4个元素
a[-3: ]  # 读取字符串最后3个字符
b[-3: ]  # 读取列表最后3个元素
c[-3: ]  # 读取元组最后3个元素

切片这个操作,字符串、列表和元组完全相同。

循环迭代

for char in a:  # 对字符串进行迭代
    print(char)
for element in b:  # 对列表进行迭代
    print(element)
for element in c:  # 对元组进行迭代
    print(element)

循环迭代这个操作,字符串、列表和元组完全相同。

倒序输出

a[::-1]  # 把字符串倒序 
b[::-1]  # 把列表倒序
c[::-1]  # 把元组倒序

运行效果如下图所示:


倒序输出这个操作,字符串、列表和元组完全相同。

元素是否在里面

if 'x' in a:
    print('字符 x 在字符串中!')
if 3 in b:
    print('元素 3 在列表中!')
if 3 in c:
    print('元素 3 在元组中!')

判断一个字符是否在字符串中,或者判断一个元素是否在列表、元组中,操作完全相同。

查找索引

a = 'hello'
index = a.index('e')
print('字符e 在字符串中的索引为:', index)
b = ['kingname', 'pm', 'ui', 'spider']
index = b.index('pm')
print('元素pm在列表中的索引为:', index)
c = ('kingname', 'pm', 'ui', 'spider')
index = c.index('pm')
print('元素pm在元组中的索引为:', index)

运行效果如下图所示:

查询子字符串在字符串中的索引,或者根据元素查询其在列表、元组中的索引,操作完全相同。

统计出现次数

a = 'helloworld'
num = a.count('l')
print('字符 l 在字符串中出现的次数为:', num)
b = ['kingname', 'pm', 'ui', 'pm', 'spider']
num = b.count('pm')
print('元素 pm 在列表中出现的次数为:', num)
c = ('kingname', 'pm', 'ui', 'pm', 'spider')
num = c.count('pm')
print('元素pm 在元组中出现的次数为:', num)

运行效果如下图所示:

统计出现次数,这个操作对字符串、列表和元组完全相同。

拼接操作

a = 'hello'
b = 'world'
print(a + b)
a = [1, 2, 3]
b = [4, 5, 6]
print(a + b)
a = (1, 2, 3)
b = (4, 5, 6)
print(a + b)

运行效果如下图所示:

加号拼接这个操作,字符串、列表和元组完全相同。

总结

在“读”这个操作上面,字符串、列表、元组是完全相同的,只要掌握了其中一个,另外两个自动就知道怎么操作了。这就叫做类比。

先学习了相同的操作,再来分别学习每个数据结构各自独特的操作,这样才能做到事半功倍,举一反三。

令人遗憾的是,目前市面上绝大部分的 Python 教程,都没有做到这一点。

目录
相关文章
|
4天前
|
存储 算法 Python
Python图论实战:从零基础到精通DFS与BFS遍历,轻松玩转复杂网络结构
【7月更文挑战第11天】图论在数据科学中扮演关键角色,用于解决复杂网络问题。Python因其易用性和库支持成为实现图算法的首选。本文通过问答形式介绍DFS和BFS,图是节点和边的数据结构,遍历用于搜索和分析。Python中图可表示为邻接表,DFS用递归遍历,BFS借助队列。DFS适用于深度探索,BFS则用于最短路径。提供的代码示例帮助理解如何在Python中应用这两种遍历算法。开始探索图论,解锁更多技术可能!
20 6
|
3天前
|
算法 定位技术 Python
震惊!Python 图结构竟然可以这样玩?DFS&BFS 遍历技巧大公开
【7月更文挑战第12天】在Python中,图数据结构通过邻接表实现,如`Graph`类所示。深度优先搜索(DFS)和广度优先搜索(BFS)是图遍历的关键算法。DFS递归遍历从起点开始的分支,常用于路径查找和连通性检查;BFS使用队列,适用于找最短路径。
8 3
|
3天前
|
存储 缓存 Python
python的结构
【7月更文挑战第12天】python的结构
5 2
|
4天前
|
算法 Python
深度挖掘Python图结构:DFS与BFS遍历的艺术,让复杂问题迎刃而解
【7月更文挑战第11天】在数据结构与算法中,图的遍历如DFS和BFS是解决复杂问题的关键。DFS深入探索直至无路可走,回溯找其他路径,适合找任意解;BFS则逐层扩展,常用于找最短路径。在迷宫问题中,BFS确保找到最短路径,DFS则可能不是最短。Python实现展示了两种方法如何在图(迷宫)中寻找从起点到终点的路径。
|
1月前
|
Python
Python编程实战:如何将列表组装成一棵树结构
本文介绍了如何在Python中将列表转换为树结构。首先定义`TreeNode`类表示节点,包含值和子节点列表。然后,通过`list_to_tree`函数递归地将列表转为树。此外,还提供了添加和删除节点的方法。文章旨在帮助读者理解和操作树结构,以解决实际编程问题。
Python编程实战:如何将列表组装成一棵树结构
|
16天前
|
数据采集 Python
半小时速通Python爬虫!GitHub开源的Python爬虫入门教程
今天给小伙伴们带来了一篇详细介绍 Python 爬虫入门的教程,从实战出发,适合初学者。 小伙伴们只需在阅读过程紧跟文章思路,理清相应的实现代码,30 分钟即可学会编写简单的 Python 爬虫。
|
16天前
|
数据采集 Python
半小时速通Python爬虫!GitHub开源的Python爬虫入门教程
今天给小伙伴们带来了一篇详细介绍 Python 爬虫入门的教程,从实战出发,适合初学者。 小伙伴们只需在阅读过程紧跟文章思路,理清相应的实现代码,30 分钟即可学会编写简单的 Python 爬虫。
|
17天前
|
数据采集 机器学习/深度学习 运维
超全!GitHub星标6500的Python入门教程大全,太强了!
Python 类库(模块)极其丰富,这使得 Python 几乎无所不能,不管是传统的 Web 开发、PC 软件开发、Linux 运维,还是当下火热的机器学习、大数据分析、网络爬虫,Python 都能胜任。 今天给小伙伴们分享的这份Python入门教程大全是从gitee上扒下来的,这套教程不是教科书,不会玩弄概念,而是力求口语化和通俗化,让读者尽快入门。
|
21天前
|
数据采集 机器学习/深度学习 运维
超全!GitHub星标6500的Python入门教程大全,太强了!
Python 类库(模块)极其丰富,这使得 Python 几乎无所不能,不管是传统的 Web 开发、PC 软件开发、Linux 运维,还是当下火热的机器学习、大数据分析、网络爬虫,Python 都能胜任。 今天给小伙伴们分享的这份Python入门教程大全是从gitee上扒下来的,这套教程不是教科书,不会玩弄概念,而是力求口语化和通俗化,让读者尽快入门。
|
8天前
|
监控 测试技术 Python
探索Python魅力:利用闭包与装饰器优化代码结构
【7月更文挑战第7天】Python中的闭包和装饰器是强大工具。闭包是能记住外部作用域变量的内部函数,常用于动态函数创建和数据封装。装饰器是接收函数并返回新函数的函数,用于在不修改原代码的情况下扩展功能,如日志或性能监控。通过示例展示了如何使用它们优化代码结构和提升效率。掌握这两者,能写出更优雅高效的Python代码。