本篇文章为大家展示了python中序列类型如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
10余年的碌曲网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整碌曲建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“碌曲网站设计”,“碌曲网站推广”以来,每个客户项目都认真落实执行。
1、序列类型按照分类维度不同分为:
容器序列(list,tuple,deque),扁平序列(str,bytes,bytearray,array.array),区别是是否可以放置不同类型的对象
可变序列(list,deque,bytearray,array),不可变序列(str,tuple,bytes)。
通过下列类可以查看序列相关的抽象方法
from collections import abc Sequence, MutableSequence
2、list的+、+=、extend、append的使用
a = [1, 2] b = [3, 4] c = a + b #产生一个新的listprint(c) #[1, 2, 3, 4]#d = a + (3, 4) #TypeError: can only concatenate list (not "tuple") to lista += [3, 4] #在a的基础上添加,不会产生新的listprint(a) #[1, 2, 3, 4]a += (5, 6)# += 实现魔法函数为 __iadd__ 使用extend实现print(a) #[1, 2, 3, 4, 5, 6]#s.extend(iterable)a.extend([7,8])print(a) #[1, 2, 3, 4, 5, 6, 7, 8]a.append([10,11])print(a)#[1, 2, 3, 4, 5, 6, 7, 8, [10, 11]]
3、切片使用
#模式 list[start: end: step]'''start表示切片开始的位置,默认值为0,为默认值的时候可以省略end表示切片结束的位置,默认值为列表的长度,当为列表的长度时可以省略step表示切片的步长,默认值为1,为默认值时可以省略并且可以省略最后一个:当step为负数时表示反向切片,这时start的值要比end大切片操作会返回一个新的列表'''var_test_list = list(range(10))print(var_test_list) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]print(var_test_list[::]) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]print(var_test_list[::-1]) #[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]print(var_test_list[::2]) #[0, 2, 4, 6, 8]print(var_test_list[1::2]) #[1, 3, 5, 7, 9]print(var_test_list[3:6]) #[3, 4, 5]print(var_test_list[0:100]) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]print(var_test_list[100:]) #[]var_test_list[len(var_test_list):] = [10]print(var_test_list) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]var_test_list[:0] = [-2, -1]print(var_test_list) #[-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]var_test_list[3:3] = [100] #添加print(var_test_list) #[-2, -1, 0, 100, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]var_test_list[:3] = [500, 1000]print(var_test_list) #[500, 1000, 100, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]var_test_list[3:] = [101, 102, 103]print(var_test_list) #[500, 1000, 100, 101, 102, 103]var_test_list[::2] = [0] * 3 #等号两边长度要相等print(var_test_list) #[0, 1000, 0, 101, 0, 103]var_test_list[::2] = ['a', 'b', 'c'] #等号两边长度要相等print(var_test_list) #['a', 1000, 'b', 101, 'c', 103]var_test_list[:2] = []print(var_test_list) #['b', 101, 'c', 103]del var_test_list[:2]print(var_test_list) #['c', 103]var_test_list = list(range(10))del var_test_list[::2]print(var_test_list) #[1, 3, 5, 7, 9]
4、不可修改序列类实现
import numbersclass Group:'''可参照 from collections import abc Sequence ''' def __init__(self, var_group_name, var_company_name, var_staffs):self.var_group_name = var_group_nameself.var_company_name = var_company_nameself.var_staffs = var_staffsdef __reversed__(self):#序列反转 self.var_staffs.reverse()return self.var_staffsdef __getitem__(self, item):#实现切片 var_cls = type(self)if isinstance(item, slice): #切片对象(start:end:step) return var_cls(self.var_group_name, self.var_company_name, self.var_staffs[item])elif isinstance(item, numbers.Integral):return var_cls(self.var_group_name, self.var_company_name, [self.var_staffs[item]])def __len__(self):return len(self.var_staffs)def __iter__(self):#迭代方法 return iter(self.var_staffs)def __contains__(self, item):if item in self.var_staffs:return True else:return Falseif __name__ == '__main__': var_group = Group('a','b',['c','d','e'])print(var_group[1:]) #<__main__.Group object at 0x10ce100f0> print(var_group[1]) #<__main__.Group object at 0x10ce10160> print(len(var_group)) #3 print('a' in var_group) #False for var_one_group in var_group:print(var_one_group) # c d e print(reversed(var_group)) #['e', 'd', 'c']
5、bisect处理排序的序列
import bisect#用来处理已排序的序列,只适用于可变序列,升序,查找使用二分查找var_insert_list = [] bisect.insort(var_insert_list, 7) bisect.insort(var_insert_list, 6) bisect.insort(var_insert_list, 2) bisect.insort(var_insert_list, 10) bisect.insort(var_insert_list, 5)#insort = insort_right 相同插入右侧print(bisect.bisect(var_insert_list, 5) ) #插入位置2print(var_insert_list) #[2, 5, 6, 7, 10]
6、列表推导式
通过一行代码来生成列表,列表生成式性能高于列表操作
#提取1-20之间的奇数#[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]print([ var_i for var_i in range(1,21) if var_i % 2 == 1 ])#提取1-20之间的奇数并对值进行求平方def testSquare(var_i):return var_i * var_i#[1, 9, 25, 49, 81, 121, 169, 225, 289, 361]print([ testSquare(var_i) for var_i in range(1,21) if var_i % 2 == 1 ])#生成器表达式var_test_list = ( var_i for var_i in range(1,21) if var_i % 2 == 1 )#print(type(var_test_list))#[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]print(list(var_test_list))#字典推导式var_dict = {'a':1, 'b':2, 'c':3}#{1: 'a', 2: 'b', 3: 'c'}print( { value:key for key, value in var_dict.items() } )#集合推导式print(set(var_dict.keys())) #{'b', 'a', 'c'}var_set = { key for key in var_dict.keys() }print(type(var_set)) # print(var_set) #{'b', 'a', 'c'}
上述内容就是python中序列类型如何使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。