中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

双鸭山市| 江华| 汝州市| 响水县| 鄱阳县| 新乡市| 武鸣县| 茌平县| 山阳县| 全椒县| 怀远县| 丰城市| 南召县| 恩平市| 高唐县| 安溪县| 靖安县| 佳木斯市| 岢岚县| 灌南县| 义马市| 菏泽市| 灌南县| 巴彦淖尔市| 连江县| 朝阳区| 太保市| 常山县| 长沙县| 秦安县| 彰武县| 大丰市| 西峡县| 北海市| 丽江市| 宝坻区| 永春县| 伊川县| 偃师市| 安吉县| 巴林右旗|