当前位置: 首页 > 科技观察

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

时间:2023-03-13 20:14:48 科技观察

一定在网上看过各种Python入门教程。这些教程在讲Python的基本数据结构时,一般会遵循以下模式:数字、字符串、浮点数列表、字典集合……这种结构虽然中规中矩,但并不能让读者动手。学会举一反三。为什么所谓的类比说呢?因为这些教程的教学模式让读者很难找到字符串、列表和元组之间的相似之处。下面我们从“读”的角度来看一下这三种数据结构。假设有一个名为a的字符串,一个名为b的列表和一个名为c的元组。那么请看下面的操作。(1)按索引读取元素a[0]#字符串的第一个字符b[0]#列表的第一个元素c[0]#元组的第一个元素a[3]#第四个字符字符串字符b[3]#列表的第四个元素c[3]#元组的第四个元素a[-1]#字符串的最后一个字符b[-1]#列表c的最后一个元素[-1]#meta组的最后一个元素按索引读取元素。这个操作对于字符串、列表和元组是完全一样的。(2)切片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个字符ofthetupleElementa[-3:]#读取字符串的最后3个字符b[-3:]#读取列表的最后3个元素c[-3:]#读取元组切片的最后3个元素这个操作,字符字符串,列表,元组完全一样。(3)循环迭代forcharina:#Iterateoverstringsprint(char)forelementinb:#Iterateoverlistsprint(element)forelementinc:#Iterateovertuplesprint(element)循环迭代这个操作,字符串,列表和元组是完全一样的。(4)反向输出a[::-1]#反转字符串b[::-1]#反转列表c[::-1]#反转运行元组的效果如下图:reverseoutputthis操作对于字符串、列表和元组是完全一样的。(5)if'x'ina:print('字符x在字符串中!')if3inb:print('元素3在列表中!')if3inc:print('元素3在字符串中tuple!')判断一个字符是否在字符串中,或??者判断一个元素是否在列表或元组中,操作是完全一样的。(6)查找索引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)运行效果如下图:查询中子串的索引字符串,或者根据元素在列表和元组中的索引进行查询,操作完全一样。(7)统计出现次数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)的运算效果如下图所示:countthenumberofoccurrences,这个运算对字符串、列表、元组完全一样。(8)拼接操作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教程并没有做到这一点。