第16讲:序列!序列!
一 列表、元组、字符串的共同点
- 1 都可以通过索引得到每一个元素
- 2 默认的索引值总是从0开始的
- 3 可以通过分片的方式来得到一个范围内元素的集合
- 4 有很多的共同操作符(重复操作符、拼接操作符、成员关系操作符)
因此,我们把列表、元组、字符串统称为序列
二 序列的内置函数BIF
1 list()函数
- 功能:把一个可迭代对象转化为列表
- 语法:list() 产生一个空列表 list(iterable) 把可迭代项目的内容通过索引值迭代,将其变成一个列表
- 迭代:重复反馈过程的活动,其目的通常是为了达到或接近所需的目标或结果;每次对过程的重复称之为一次迭代;每一次迭代得到的结果都会被用作下一次迭代的初始值,可将迭代近似看成一个for循环
2 tuple()函数
- 功能:把一个可迭代对象转化成元组
- 语法:tuple([iterable])
3 str()函数
- 功能:把obj对象转化成字符串
- 语法:str(obj)
4 len()函数
- 功能:计算序列的长度并返回
- 语法:len(sub)
5 max()函数:返回序列或者参数集合中的最大值,要保证序列的全部参数类型是统一的
6 min()函数:返回序列或者参数集合中的最小值,要保证序列的全部参数类型是统一的
7 sum(interable[,start=0]):返回序列interable和start的总和
- 不是数字类型的数据不能使用sum函数
8 sorted()函数,功能类似于序列的内置方法.sort(),对序列进行排序
- 注意sort()函数是没有返回值的,不能把它赋给一个变量,如果写成 b=a.sort() ,得到的b可能是一个空指针?
9 reversed()函数,功能与list.reverse()类似,直接使用reversed(interable)它会返回一个迭代器对象,我们可以用list函数将它转换成列表
-
>>> b [434, 65, 64, 43, 22, 9, 7] >>> reversed(b) <list_reverseiterator object at 0x00000059AEC1BFD0> >>> b [434, 65, 64, 43, 22, 9, 7] >>> c = list(reversed(b)) >>> c [7, 9, 22, 43, 64, 65, 434]
10 enumerate() 枚举,生成由每个元素的index值和item值组合成的元组
-
>>> c [7, 9, 22, 43, 64, 65, 434] >>> enumerate(c) <enumerate object at 0x00000059AEC42380> >>> d = list(enumerate(c)) >>> d [(0, 7), (1, 9), (2, 22), (3, 43), (4, 64), (5, 65), (6, 434)] >>>
11 zip 返回由不同序列同一索引下的元素组成的元组
-
>>> a = [1,2,3,46,8] >>> b = [32,332,345,78] >>> zip(a,b) <zip object at 0x00000059AEC423C0> >>> c = list(zip(a,b)) >>> c [(1, 32), (2, 332), (3, 345), (46, 78)] >>>
三 课后作业
1 你还能复述出“迭代”的概念吗?
所谓迭代,是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。
2 现在的小屁孩太调皮了,邻居家的孩子淘气,把小甲鱼刚写好的代码画了个图案,麻烦各位鱼油恢复下啊
name = input('请输入待查找的用户名:') score = [['迷途', 85], ['黑夜', 80], ['小布丁', 65], ['福禄娃娃', 95], ['怡静', 90]] IsFind = False for each in score: if name in each: print(name + '的得分是:', each[1]) IsFind = True break if IsFind == False: print('查找的数据不存在!')
3 猜想一下 min() 这个BIF的实现过程
def min(x): least = x[0] for each in x: if each < least: least = each return least print(min('123456789'))
4 视频中我们说 sum() 这个BIF有个缺陷,就是如果参数里有字符串类型的话就会报错,请写出一个新的实现过程,自动“无视”参数里的字符串并返回正确的计算结果
def sum(x): result = 0 for each in x: if (type(each) == int) or (type(each) == float): result += each else: continue return result print(sum([1, 2.1, 2.3, 'a', '1', True]))