溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python中序列類型如何使用

發(fā)布時(shí)間:2021-06-22 16:23:37 來源:億速云 閱讀:161 作者:Leah 欄目:編程語言

本篇文章為大家展示了python中序列類型如何使用,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

1、序列類型按照分類維度不同分為:

容器序列(list,tuple,deque),扁平序列(str,bytes,bytearray,array.array),區(qū)別是是否可以放置不同類型的對(duì)象

可變序列(list,deque,bytearray,array),不可變序列(str,tuple,bytes)。

通過下列類可以查看序列相關(guān)的抽象方法

from collections import abc
Sequence, MutableSequence

2、list的+、+=、extend、append的使用

a = [1, 2]
b = [3, 4]
c = a + b #產(chǎn)生一個(gè)新的listprint(c) #[1, 2, 3, 4]#d = a + (3, 4) #TypeError: can only concatenate list (not "tuple") to lista += [3, 4] #在a的基礎(chǔ)上添加,不會(huì)產(chǎn)生新的listprint(a) #[1, 2, 3, 4]a += (5, 6)# += 實(shí)現(xiàn)魔法函數(shù)為 __iadd__ 使用extend實(shí)現(xiàn)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表示切片開始的位置,默認(rèn)值為0,為默認(rèn)值的時(shí)候可以省略end表示切片結(jié)束的位置,默認(rèn)值為列表的長(zhǎng)度,當(dāng)為列表的長(zhǎng)度時(shí)可以省略step表示切片的步長(zhǎng),默認(rèn)值為1,為默認(rèn)值時(shí)可以省略并且可以省略最后一個(gè):當(dāng)step為負(fù)數(shù)時(shí)表示反向切片,這時(shí)start的值要比end大切片操作會(huì)返回一個(gè)新的列表'''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 #等號(hào)兩邊長(zhǎng)度要相等print(var_test_list) #[0, 1000, 0, 101, 0, 103]var_test_list[::2] = ['a', 'b', 'c'] #等號(hào)兩邊長(zhǎng)度要相等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、不可修改序列類實(shí)現(xiàn)

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):#序列反轉(zhuǎn)        self.var_staffs.reverse()return self.var_staffsdef __getitem__(self, item):#實(shí)現(xiàn)切片        var_cls = type(self)if isinstance(item, slice): #切片對(duì)象(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 相同插入右側(cè)print(bisect.bisect(var_insert_list, 5) ) #插入位置2print(var_insert_list) #[2, 5, 6, 7, 10]

6、列表推導(dǎo)式

通過一行代碼來生成列表,列表生成式性能高于列表操作

#提取1-20之間的奇數(shù)#[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之間的奇數(shù)并對(duì)值進(jìn)行求平方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 ])#生成器表達(dá)式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))#字典推導(dǎo)式var_dict = {'a':1, 'b':2, 'c':3}#{1: 'a', 2: 'b', 3: 'c'}print( { value:key for key, value in var_dict.items() } )#集合推導(dǎo)式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'}

上述內(nèi)容就是python中序列類型如何使用,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI