第五章(4) 序列
本章内容:
- 1、list([iterable))
- 2、tuple([iterable])
- 3、str(obj)
- 4、len(sub)
- 5、max(....)
- 6、min(....)
- 7、sum(iterable[,start])
- 8、sorted(iterable,key =None,reverse=False)
- 9、reversed(sequence)
- 10、enumerate(iterable)
- 11、zip(iter1[,iter2[...]])
一、列表、元组和字符串 之间有的共同点:
1、都可以通过索引得到每一个元素
2、默认索引从0开始,也支持负数索引
3、可以通过分片的方法得到一个范围内的元素的集合
4、有很多共同的操作(重复操作符、拼接操作符、成员关系操作符)
我们把它们统称为:序列
二、介绍一些序列常用的BIF(内建方法)
1、list([iterable))
list()方法 用于把一个可迭代的对象转换为列表
#创建一个空列表 a = list() #可以不带参数 print(a) # [] #将字符串的每一个字符迭代存放到列表中 b = list('Fishc') #带参数,一个可迭代的对象 print(b) # ['F', 'i', 's', 'h', 'c'] #将元组中的每一个元素迭代存放到列表中 c = list((1,2,3,5,8,13)) print(c) #[1, 2, 3, 5, 8, 13]
2、tuple([iterable])
tuple()方法 用于把一个可迭代的对象转换为元组,具体用法和list()一样
#创建一个空元组 a = tuple() #可以不带参数 print(a) # () #将字符串的每一个字符迭代存放到元组中 b = tuple('Fishc') #带参数,一个可迭代的对象 print(b) # ('F', 'i', 's', 'h', 'c') #将元组中的每一个元素迭代存放到元组中 c = tuple((1,2,3,5,8,13)) print(c) # (1, 2, 3, 5, 8, 13)
3、str(obj)
str()方法用于把obj对象转换为字符串,这个方法结合int() 和float() 方法,进行数据类型的转换
4、len(sub)
#len() 方法用于返回sub参数的长度 str1 = " L love fishc.com" print(len(str1)) # 17 list1 = [1,2,3,4,6,7,9] print(len(list1)) # 7 tuple1 = '这','是','一','个','元组' print(len(tuple1)) # 5
5、max(....)
max()方法用于返回序列或者参数集合中的最大值,可以是一个序列,也可以是多个参数
注意:需要保证序列或者参数的数据类型统一
list1 = [1,18,13,0,-98,34,54,76,32] #一个序列 print(max(list1)) #76 str1 = "I love fishc.com" #一个序列 print(max(str1)) # v a = max(5,8,1,13,5,29,10,7) #多个参数 print(a) #29
max()实现原理
tuple1 = [1,2,3,4,5,6,7,8,9] def temp(): temp = tuple1[0] for each in tuple1: if each >temp: temp = each return temp b = temp() print(b)
6、min(....)
min() 跟max() 用法一样,但效果相反,用于返回序列或者参数集合中的最小值
注意:需要保证序列或者参数的数据类型统一
list1 = [1,18,13,0,-98,34,54,76,32] #一个序列 print(min(list1)) #-98 str1 = "I love fishc.com" #一个序列 print(min(str1)) # v a = min(5,8,1,13,5,29,10,7) #多个参数 print(a) #1 list1.append('X') print(min(list1)) #报错 TypeError: '<' not supported between instances of 'str' and 'int'
min()实现原理
tuple1 = [1,2,3,4,5,6,7,8,9] def temp(): temp = tuple1[0] for each in tuple1: if each <temp: temp = each return temp b = temp() print(b)
7、sum(iterable[,start])
sum() 用于返回序列iterable的总和。用法与max()和min()一样
tuple1 = 1,2,3,4,5 print(sum(tuple1)) #15 w = sum(tuple1,10) print(w) #25
8、sorted(iterable,key =None,reverse=False)
sorted() 方法用于返回一个排序的列表,是一个排序后的新列表
list.sort()是列表的内建方法,实现列表的原地排序,它们两实现的效果是一致的
list1 = [1,4,6,3,99,5,3,4,77,88,3,2,0] list2 = list1[:] list1.sort() print(list1) # [0, 1, 2, 3, 3, 3, 4, 4, 5, 6, 77, 88, 99] print(sorted(list2)) #[0, 1, 2, 3, 3, 3, 4, 4, 5, 6, 77, 88, 99] print(list2) #[1, 4, 6, 3, 99, 5, 3, 4, 77, 88, 3, 2, 0] #注意:sorted(list2) 已经是一个新的列表了,原来的list2没有变化
9、reversed(sequence)
reversed()方法用于返回逆向迭代序列的值。实现的效果和list.reverse() 是一致的。区别在于list.reverse() 是原地翻转,而reversed()是返回一个翻转后的迭代器对象。你没看错,返回的不是一个列表,是一个迭代器对象
list1 = [1,4,6,3,99,5,3,4,77,88,3,2,0] list1.reverse() print(list1) # [0, 2, 3, 88, 77, 4, 3, 5, 99, 3, 6, 4, 1] print(reversed(list1)) # <list_reverseiterator object at 0x0000000002242390> #用for 循环来取 for each in reversed(list1): print(each,end=',') #1,4,6,3,99,5,3,4,77,88,3,2,0,
10、enumerate(iterable)
enumerate() 方法生成由二元组(二元组就是元素数量为二的元组)构成的一个迭代对象,每一个二元组是由可迭代参数的索引号及对应的元素组成的。
str1 = "Fishc" for each in enumerate(str1): print(each) """ (0, 'F') (1, 'i') (2, 's') (3, 'h') (4, 'c') """
11、zip(iter1[,iter2[...]])
zip()方法用于返回由各个可迭代参数共同组成的元组
list1 = [1,3,5,7,9] str1 = "Fishc" for each in zip(list1,str1): print(each) ''' (1, 'F') (3, 'i') (5, 's') (7, 'h') (9, 'c') ''' tuple1 = (2,4,6,8,10) for each in zip(list1,str1,tuple1): print(each) """ (1, 'F', 2) (3, 'i', 4) (5, 's', 6) (7, 'h', 8) (9, 'c', 10) """
三、作业

浙公网安备 33010602011771号