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]))
来源:CSDN
作者:weixin_46206572
链接:https://blog.csdn.net/weixin_46206572/article/details/104261091