016序列!序列!

北城以北 提交于 2020-02-11 14:34:35

016序列!序列!

一、列表、元组和字符串的共同点

都可以通过索引得到每一个元素
默认索引值总是从0开始
可以通过分片的方法得到一个范围内的元素的集合
有很多共同的操作符:重复*、拼接+、成员关系in,not in

二、序列常见BIF

1、list():把一个可迭代对象转换为列表

>>> a = list()
>>> a
[]
>>> b = 'I Love FishC.com'
>>> b = list(b)
>>> b
['I', ' ', 'L', 'o', 'v', 'e', ' ', 'F', 'i', 's', 'h', 'C', '.', 'c', 'o', 'm']
>>> c= (1,1,2,3,5,8,13,21,34)
>>> c = list(c)
>>> c
[1, 1, 2, 3, 5, 8, 13, 21, 34]

2、tuple([iterable]):把一个可迭代对象转换为元组

3、str(obj):把obj对象转换为字符串

4、len(sub):返回sub的长度

>>> len(a)
0
>>> a
[]
>>> len(b)
16
>>> b
['I', ' ', 'L', 'o', 'v', 'e', ' ', 'F', 'i', 's', 'h', 'C', '.', 'c', 'o', 'm']

5、max():返回序列或者参数集合中的最大值
6、min():返回序列或者参数集合中的最小值

>>> max(1,2,3,4,5)
5
>>> max(b)
'v'
>>> numbers = [1,18,13,0,-98,34,54,76,32]
>>> max(numbers)
76
>>> min(numbers)
-98
>>> chars = '1234567890'
>>> min(chars)
'0'

7、sum(iterable[,star=0]):返回序列iterable和可选参数start的总和

>>> tuple2 = (3.1,2.3,3.4)
>>> sum(tuple2)
8.8
>>> sum(tuple2,2)
10.799999999999999

8、sorted():返回排序列表(从小到大)

>>> numbers
[1, 18, 13, 0, -98, 34, 54, 76, 32]
>>> sorted(numbers)
[-98, 0, 1, 13, 18, 32, 34, 54, 76]

9、reversed():返回迭代器对象

>>> numbers
[1, 18, 13, 0, -98, 34, 54, 76, 32]
>>> reversed(numbers)
<list_reverseiterator object at 0x00000272F1037430>
>>> list(reversed(numbers))
[32, 76, 54, 34, -98, 0, 13, 18, 1]

10、enumerate():生成index和item组合的元组

>>> numbers
[1, 18, 13, 0, -98, 34, 54, 76, 32]
>>> enumerate(numbers)
<enumerate object at 0x00000272F10B11C0>
>>> list(enumerate(numbers))
[(0, 1), (1, 18), (2, 13), (3, 0), (4, -98), (5, 34), (6, 54), (7, 76), (8, 32)]

11、zip():返回参数序列组成的元素

>>> a = [1,2,3,4,5,6,7,8]
>>> b = [4,5,6,7,8]
>>> zip(a,b)
<zip object at 0x00000272F0947580>
>>> list(zip(a,b))
[(1, 4), (2, 5), (3, 6), (4, 7), (5, 8)]

思考题

0.我们根据列表、元祖和字符串的共同特点,把它们三统称为什么?
序列

1.请问分别使用什么BIF,可以把一个可迭代对象转换为列表、元祖和字符串?
列表:list()
元组:tuple()
字符串:str()

2.你还能复述出“迭代”的概念吗?
所谓迭代,是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。

3.你认为调用 max(‘I love FishC.com’) 会返回什么值?为什么?
‘v’,因为v的ASCLL码值最大(ASCII对照表:http://bbs.fishc.com/thread-41199-1-1.html)

4.哎呀呀,现在的小屁孩太调皮了,邻居家的孩子淘气,把小甲鱼刚写好的代码画了个图案,麻烦各位鱼油恢复下啊,另外这家伙画的是神马吗?怎么那么眼熟啊!??
在这里插入图片描述
if name in each[0]:
name not in each:

name = input('请输入待查找的用户名:')
score = [['迷途',85],['黑夜',80],['小布丁',65],['福绿娃娃',95],['怡静',90]]

for each in score:
    if name in each[0]:
        print(name + '的得分是:' , each[1])
        break

if name not in each:
    print('查找的数据不存在!')

操作题

0.猜想一下 min() 这个BIF的实现过程

def min(x):
    least = x[0]

    for each in x:
        if each < least:
            least = each

    return least

print(min('123456789'))

1.视频中我们说 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]))
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!