温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python中序列类型如何使用

发布时间:2021-06-22 16:23:37 来源:亿速云 阅读:171 作者:Leah 栏目:编程语言

本篇文章为大家展示了python中序列类型如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

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 )#<class 'generator'>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)) #<class 'set'>print(var_set) #{'b', 'a', 'c'}

上述内容就是python中序列类型如何使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI