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

开发 后端
教程在讲 Python 基础数据结构的时候,结构虽然说是中规中矩由浅入深,但是它并没有让读者做到类比学习触类旁通。为什么这样说呢?因为这些教程的教学模式,使得读者不容易发现字符串、列表、元组的相同之处。

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

  • 数字、字符串、浮点数
  • 列表
  • 字典
  • 集合

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

[[342126]]

所谓类比

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

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

(1) 按索引读取元素

  1. a[0]  # 字符串第一个字符 
  2. b[0]  # 列表第一个元素 
  3. c[0]  # 元组第一个元素 
  4.  
  5. a[3]  # 字符串第4个字符 
  6. b[3]  # 列表第4个元素 
  7. c[3]  # 元组第4个元素 
  8.  
  9. a[-1]  # 字符串最后一个字符 
  10. b[-1]  # 列表最后一个元素 
  11. c[-1]  # 元组最后一个元素 

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

(2) 切片

  1. a[1: 4]  # 读取字符串第2、3、4个字符 
  2. b[1: 4]  # 读取列表第2、3、4个元素 
  3. c[1: 4]  # 读取元组第2、3、4个元素 
  4.  
  5. a[: 4]  # 读取字符串前4个字符 
  6. b[: 4]  # 读取列表前4个元素 
  7. c[: 4]  # 读取元组前4个元素 
  8.  
  9. a[-3: ]  # 读取字符串最后3个字符 
  10. b[-3: ]  # 读取列表最后3个元素 
  11. c[-3: ]  # 读取元组最后3个元素 

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

(3) 循环迭代

  1. for char in a:  # 对字符串进行迭代 
  2.     print(char) 
  3.  
  4. for element in b:  # 对列表进行迭代 
  5.     print(element) 
  6.  
  7. for element in c:  # 对元组进行迭代 
  8.     print(element) 

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

(4) 倒序输出

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

运行效果如下图所示:

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

(5) 元素是否在里面

  1. if 'x' in a: 
  2.     print('字符 x 在字符串中!') 
  3.  
  4. if 3 in b: 
  5.     print('元素 3 在列表中!') 
  6.  
  7. if 3 in c: 
  8.     print('元素 3 在元组中!') 

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

(6) 查找索引

  1. a = 'hello' 
  2. index = a.index('e') 
  3. print('字符e 在字符串中的索引为:', index) 
  4.  
  5. b = ['kingname', 'pm', 'ui', 'spider'] 
  6. index = b.index('pm') 
  7. print('元素pm在列表中的索引为:', index) 
  8.  
  9. c = ('kingname', 'pm', 'ui', 'spider') 
  10. index = c.index('pm') 
  11. print('元素pm在元组中的索引为:', index) 

运行效果如下图所示:

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

(7) 统计出现次数

  1. a = 'helloworld' 
  2. num = a.count('l') 
  3. print('字符 l 在字符串中出现的次数为:', num) 
  4.  
  5. b = ['kingname', 'pm', 'ui', 'pm', 'spider'] 
  6. num = b.count('pm') 
  7. print('元素 pm 在列表中出现的次数为:', num) 
  8.  
  9. c = ('kingname', 'pm', 'ui', 'pm', 'spider') 
  10. num = c.count('pm') 
  11. print('元素pm 在元组中出现的次数为:', num) 

运行效果如下图所示:

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

(8) 拼接操作

  1. a = 'hello' 
  2. b = 'world' 
  3. print(a + b) 
  4.  
  5. a = [1, 2, 3] 
  6. b = [4, 5, 6] 
  7. print(a + b) 
  8.  
  9. a = (1, 2, 3) 
  10. b = (4, 5, 6) 
  11. print(a + b) 

运行效果如下图所示:

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

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

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

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

 

责任编辑:赵宁宁 来源: 未闻Code
相关推荐

2013-01-14 09:29:04

2011-05-10 10:38:54

布线光纤

2011-04-06 12:29:42

2012-05-22 00:25:41

.NET

2023-12-05 09:14:54

2011-04-06 16:40:27

C++构造函数

2011-08-17 12:25:11

2010-04-28 09:50:14

Oracle数据库

2012-12-10 09:57:00

路由器交换机

2011-03-22 14:59:36

2013-07-24 09:47:52

语言语速环境语言

2017-01-12 14:26:30

2021-04-23 11:11:59

加密货币硬币数字货币

2020-11-09 10:01:29

Python乘法位运算

2021-01-30 10:51:07

Python编程语言开发

2012-08-23 09:28:01

编程编程语言

2020-04-16 11:19:55

深度学习神经网络网络层

2015-08-06 12:50:47

技术人员博客

2010-03-12 14:04:32

Python入门教程

2012-07-17 09:13:14

Scrapy
点赞
收藏

51CTO技术栈公众号