您好,登錄后才能下訂單哦!
本篇文章為大家展示了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中序列類型如何使用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。