什么叫做类比,为什么有些 Python 入门教程结构不合理?
时间:2022-07-24
本文章向大家介绍什么叫做类比,为什么有些 Python 入门教程结构不合理?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
摄影:产品经理
这家店的网红脸太多了
想必关注未闻 Code的同学或多或少都在网上看过各种各样的 Python 入门教程。这些教程在讲 Python 基础数据结构的时候,一般是按照下面这个模式来讲的:
- 数字、字符串、浮点数
- 列表
- 字典
- 集合
- …
这个结构虽然说是中规中矩由浅入深,但是它并没有让读者做到类比学习触类旁通。
所谓类比
为什么这样说呢?因为这些教程的教学模式,使得读者不容易发现字符串、列表、元组的相同之处。
我们从“读”这个角度来看看这三个数据结构。假设有一个字符串叫做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 教程,都没有做到这一点。
- 解决后台无法进入提示DedeCMS Error: (PHP 5.3 and above) Please set 'request_order' ini value
- 一文教你实现skip-gram模型,训练并可视化词向量
- 如何将文章列表用<li>分两列显示
- 面试题之走楼梯问题
- 最长公共子序列与最长公共子串
- nodejs 的序列化与反序列化
- dedecms获取当前文章所在栏目URL
- highcharts 时间少8小时问题
- 【干货】python玩转微信:微信好友统计信息全掌握
- 使用Visual Studio 调试断点不起作用的问题解决办法 调试Revit CAD 不能进入断点
- openFileDialog的Filter属性设置
- dedecms调用当前栏目的子栏目怎么操作
- dedecms如何增加自定义字段
- dedecms如何快速删除跳转的文章(记得清空内容回收站)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SAP CRM One Order函数CRM_Object_FILL_OW的设计原理
- SAP CRM One Order header extension的缓存机制设计原理
- SAP CRM数据库表CRMD_CUMULAT_H的设计原理
- Python从入门到大师一百篇教程 | 前言:Python的前世和发展
- Java和ABAP的垃圾回收机制(Garbage Collection)比较
- Java和SAP ABAP的异常处理
- Java的字节码和ABAP load的比较
- matplotlib | Python强大的作图工具,让你从此驾驭图表(一)
- 使用ES6的fetch API读取数据时要注意的一个和cookie相关的坑
- 跟牛老师一起学WEBGIS——WEBGIS基础(地图切片)
- Go语言 | 并发设计中的同步锁与waitgroup用法
- LeetCode 99 | 如何不用递归遍历二叉搜索树?MT方法给你答案
- 以攻击者角度学习某风控设备指纹产品
- 高并发系统三大利器之缓存
- 前端测试题:(解析)js中关于类(class)的继承的说法,下面错误的是?