序列包含乙個以上的元素 Python 序列型別

2021-10-12 17:08:41 字數 3029 閱讀 6978

1. bisect 模組

2. array 與 list 的不同點

3. 切片操作

4. 列表生成式、生成器表示式、字典推導式、集合推導式

5. 序列中+、+= 和 extend 的區別

6. list 與 set、dict 效能對比

序列型別主要可分為以下幾個類別:
容器序列:list、tuple、deque

扁平序列:str、bytes、bytearray、array.array

可變序列:list, deque,bytearray、array

不可變序列:str、tuple、bytes

bisect 模組常常用來維護乙個已排序的公升序序列。
import bisect

from collections import deque

#用來處理已排序的序列,用來維持已排序的序列, 公升序

#二分查詢

inter_list = deque()

bisect.insort(inter_list, 3)

bisect.insort(inter_list, 2)

bisect.insort(inter_list, 5)

bisect.insort(inter_list, 1)

bisect.insort(inter_list, 6)

print(bisect.bisect_left(inter_list, 3))

#學習成績

print(inter_list)

array 只能存放指定的資料型別,list 可以存放各種型別。

array 效能高。

import array

my_array = array.array("i")

#模式[start:end:step]

"""其中,第乙個數字start表示切片開始位置,預設為0;

第二個數字end表示切片截止(但不包含)位置(預設為列表長度);

第三個數字step表示切片的步長(預設為1)。

當start為0時可以省略,當end為列表長度時可以省略,

當step為1時可以省略,並且省略步長時可以同時省略最後乙個冒號。

另外,當step為負整數時,表示反向切片,這時start應該比end的值要大才行。

"""alist = [3, 4, 5, 6, 7, 9, 11, 13, 15, 17]

print (alist[::]) # 返回包含原列表中所有元素的新列表

print (alist[::-1]) # 返回包含原列表中所有元素的逆序列表

print (alist[::2]) # 隔乙個取乙個,獲取偶數字置的元素

print (alist[1::2]) # 隔乙個取乙個,獲取奇數字置的元素

print (alist[3:6]) # 指定切片的開始和結束位置

alist[0:100] # 切片結束位置大於列表長度時,從列表尾部截斷

alist[100:] # 切片開始位置大於列表長度時,返回空列表

alist[len(alist):] = [9] # 在列表尾部增加元素

alist[:0] = [1, 2] # 在列表頭部插入元素

alist[3:3] = [4] # 在列表中間位置插入元素

alist[:3] = [1, 2] # 替換列表元素,等號兩邊的列表長度相等

alist[3:] = [4, 5, 6] # 等號兩邊的列表長度也可以不相等

alist[::2] = [0] * 3 # 隔乙個修改乙個

print (alist)

alist[::2] = ['a', 'b', 'c'] # 隔乙個修改乙個

alist[::2] = [1,2] # 左側切片不連續,等號兩邊列表長度必須相等

alist[:3] = # 刪除列表中前3個元素

del alist[:3] # 切片元素連續

del alist[::2] # 切片元素不連續,隔乙個刪乙個

# 列表生成式

int_list = [1, 2, 3, 4, 5]

qu_list = [item * item for item in int_list]

print(type(qu_list))

# 生成器表示式

odd_gen = (i for i in range(5) if i % 2 == 1)

print(type(odd_gen))

odd_list = list(odd_gen)

# 字典推導式

my_dict =

reversed_dict =

# 集合推導式

my_set =

print(my_set)

加號會建立乙個新的序列;

+= 符號是在原有序列的基礎上修改,實際呼叫的是 extend 方法;

set list dict

是否要求 hash 是 否 是

查詢效率 優 中 良

記憶體 小 小 大

是否記錄元素順序 否 是 是,但有變化

dict 查詢的效能遠遠大於 list

在 list 中隨著 list 資料的增大查詢時間會增大

在 dict 中查詢元素不會隨著 dict 的增大而增大

dict 的 key 或者 set 的值都必須是可以 hash 的。不可變物件 都是可hash的, str, fronzenset, tuple,自己實現的類hashdict 的記憶體花銷大,但是查詢速度快, 自定義的物件或者 python 內部的物件都是用 dict 包裝的

dict 的儲存順序和元素新增順序有關,新增資料有可能改變已有資料的順序

序列包含乙個以上的元素 基礎教程五 序列

序列 sequence 是一種可迭代的 元素有序的容器型別的資料。序列包括列表 list 字串 str 元組 tuple 和位元組序列 bytes 等。一 序列的索引操作 序列示例 hello字串。序列中的元素都是有序的,每乙個元素都帶有序號,這個序號叫作索引。索引有正值索引和負值索引之分。我們是通...

求乙個字串的所有子串行,包含空字串

def printson arr,i,res print i if i len arr print res return printson arr,i 1,res printson arr,i 1,res arr i if name main arr abcd printson arr,0,解釋 比...

如何判斷乙個集合是否包含這個元素

如何判斷乙個集合是否包含這個元素?本文番茄加速就來講一下這個知識點。isin 1 a 1,2,3 in 2 id a 獲取列表例項 a在記憶體中的位址 out 2 95219592 in 5 b 1,2,3 再建立乙個列表例項,元素取值也為 1,2,3 in 6 id b out 6 9516564...