第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]))
posted @ 2020-07-07 19:19  洛兰123  阅读(322)  评论(0编辑  收藏  举报