日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python数据结构的列表_Python内置数据结构——列表list

發(fā)布時(shí)間:2025/3/20 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python数据结构的列表_Python内置数据结构——列表list 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

內(nèi)置數(shù)據(jù)結(jié)構(gòu)分類:

數(shù)值型

int , float , complex , bool

序列對(duì)象

字符串 str

列表 list

tuple(元組)

鍵值對(duì)

集合 set

字典 dict

數(shù)字型int ,float , complex , bool都是class, 1,5.0 , 2+3j都是對(duì)象的實(shí)例

int : python3的int就是長(zhǎng)整型,沒有大小限制,受限于內(nèi)存大小

float:有整數(shù)部分和小數(shù)部分組成,支持十進(jìn)制和科學(xué)計(jì)數(shù)法表示,只有雙精度型

complex:有實(shí)數(shù)和虛部組成,實(shí)部和虛部都是浮點(diǎn)數(shù),3+4j

bool:int 的子類,僅有2個(gè)實(shí)例True和False 對(duì)應(yīng) 1和0,可以和整數(shù)直接運(yùn)算

列表 list()

列表是可變的,連續(xù)的(sequence),可以進(jìn)行索引的,線性數(shù)據(jù)結(jié)構(gòu),可迭代的數(shù)據(jù)結(jié)構(gòu)

區(qū)分:

list列表: 查找快...但是從修改(增/刪)的時(shí)候,很麻煩很慢

link鏈表: 查找慢...但是修改快,查找很慢

queue(隊(duì)列): 先進(jìn)先出~

stack(棧): 先進(jìn)后出,后進(jìn)先出(堆棧)

列表list定義: ?初始化

list() ->new empty list

list(iterable) -> new list initialized from iterable's items

list不能一開始就定義大小lst?=?list()

lst?=?[]

lst?=?[2,5,6,'ab']

lst?=?list(range(5))

索引 index: 也叫下標(biāo),從0?開始正索引: 從左至右,從0開始,為列表中每個(gè)單元進(jìn)行編號(hào)

負(fù)索引:從右至左,從-1開始

正負(fù)索引不可超界,否則發(fā)生一場(chǎng):Index Error

列表通過索引訪問:list[index],index就是索引,使用中包括訪問

列表查詢方法:

1.L.index(valve,[start,stop])通過元素值,從指定區(qū)間查找列表內(nèi)的元素是否匹配

匹配到第一就立刻返回索引

匹配不到,拋出異常valveError

2.count(valve)返回列表中匹配到valve的次數(shù)

時(shí)間復(fù)雜度:

index和count方法都是O(n)[遍歷]

隨著列表數(shù)據(jù)規(guī)模的增大,效率下降

len():輸出列表的長(zhǎng)度

列表元素修改

索引訪問修改 ,索引不要超界list[index]?=?valve

列表增加,插入列表

返回None意味著沒有新的列表產(chǎn)生,就地修改

1.L.append(object) -> None列表尾部追加元素,返回None

實(shí)際復(fù)雜度是O(1)

2.L.insert(index,object) -> None在指定的索引 index處插入語元素

時(shí)間復(fù)雜度是O(n)

此處index可以超界:

超越上界,尾部追加;

超越下界,頭部追加

3.L.extend(iterable) -> None將可迭代對(duì)象的元素追加進(jìn)來,返回None

返回 list ,意味著產(chǎn)生了新的list

1. + -> list連接操作,將兩個(gè)列表連接起來

產(chǎn)生新的列表,原列表不變

本質(zhì)上調(diào)用的是__add___()方法

2. * ?-> list重復(fù)操作,將本列表元素重復(fù)n次,返回新的列表

列表 * 重復(fù)的坑:x?=?[[1,2,3]]?*?3

print(x)

x[0][1]?=?20

print(x)

[[1,?2,?3],?[1,?2,?3],?[1,?2,?3]]

[[1,?20,?3],?[1,?20,?3],?[1,?20,?3]]

y?=?[1]?*?5

y[0]?=?6

y[1]?=?7

print(y)

[6,?7,?1,?1,?1]

列表刪除元素

1. L.remove(valve) -> None從左至右查找第一個(gè)匹配Valve的值,移除該元素,返回None

就地修改

效率:時(shí)間復(fù)雜度= O(n)

2. L.pop([index]) -> item不指定索引 index,就從列表尾部彈出一個(gè)元素

指定索引 index,就從index處彈出一個(gè)元素,索引超界拋出IndexError錯(cuò)誤

效率:不指定索引 Index時(shí) 時(shí)間復(fù)雜度= O(1) ,指定索引(從頭,或中間), 時(shí)間復(fù)雜度=O(n)

3. L.clear() -> None清除列表所有元素,剩下一個(gè)空列表

其它列表操作

1. L.reserve() ->?None將列表元素反轉(zhuǎn),返回None

就地修改

2. L.sort(key=None,reserve=Flase) -> None對(duì)列表元素進(jìn)行排序,就地修改,默認(rèn)升序

reserve為True,反轉(zhuǎn),降序

key= 一個(gè)函數(shù),按照key的內(nèi)容進(jìn)行排序

lst.sort(key=functionname),exp: lst.sort(key = str) 按照字符串進(jìn)行排序

3. in , not in[3,4] in [1,2,[3,4]]

[5] not in [1,2,[3,4]]

for x in [1,2,[3,4]]

列表復(fù)制

L.copy() -> List返回一個(gè)新的列表

1.淺拷貝shadow copy:

影子拷貝,也叫淺拷貝,遇到引用類型,只是復(fù)制了一個(gè)引用而已lst0?=?[1,[2,3,4],5]

lst5?=?lst0.copy()

lst5[1][1]?=?20

print(lst5)

print(lst0)

[1,?[2,?20,?4],?5]

[1,?[2,?20,?4],?5]

2.深拷貝deepcopy

copy模塊提供了deepcopyimport?copy

lst0?=?[1,[2,3,4],5]

lst5?=?copy.deepcopy(lst0)

lst5[1][1]?=?20

lst5?!?==?lst0

print(lst5)

print(lst0)

[1,?[2,?20,?4],?5]

[1,?[2,?3,?4],?5]

隨機(jī)數(shù) random模塊

1. random.randint(a,b) ?-> item返回[a,b]之間的隨機(jī)數(shù)

2. random.randrange([start],stop,[step]) ?-> item從指定范圍內(nèi),按指定基數(shù)遞增的集合中獲取一個(gè)隨機(jī)數(shù), 基數(shù)缺省值為1. random.randrange(1,7,2)

3. random.choice() ?-> item從非空序列的元素中隨機(jī)抽取一個(gè)元素,exp: random.choice(range(10)) 從0到9中隨機(jī)挑選一個(gè)整數(shù).random.choice([1,3,5,7])

4. random.shuffle(list) -> none就地打亂列表元素

5. random.sample(population,k) -> list從樣本空間或總體(序列或者集合類型) 中隨機(jī)取出 k個(gè)不同(索引位置)的元素,返回一個(gè)新的列表. exp:random.sample(['a','b','c','d'],2)

random.sample(['a','b']?,2

元組

一個(gè)有序的元素組成的集合

使用小括號(hào)()表示

元組是不可變對(duì)象

元組的定義 初始化

定義:

tuple() -> empty tuple

tuple(iterable) -> tuple initialized from iterable's items

t = tuple()

t = ()

t = tuple(range(1,7,2)) 可迭代對(duì)象

t = (1,) # 一個(gè)元素元組的定義,注意要有個(gè)逗號(hào)

t = (1,) * 5

t = (1,2,3) * 6

元組元素的訪問支持索引(下標(biāo))

元組通過索引訪問

tuple[index]: t[1]

正索引:從左至右,從0開始

負(fù)索引:從右至左,從-1開始

正負(fù)索引不可超界.否則引發(fā)一場(chǎng)Index Error

元組查詢

1.t.index(valve,[start,stop])通過值value,從指定區(qū)間查找元組內(nèi)的元素是否匹配

匹配到第一就立刻返回索引

匹配不到,拋出異常valveError

2.count(valve)返回元組中匹配到valve的次數(shù)

時(shí)間復(fù)雜度:

index和count方法都是O(n)[遍歷]

隨著列表數(shù)據(jù)規(guī)模的增大,效率下降

len():返回元素的個(gè)數(shù)

元組不可變,只讀,所以沒有增,刪,改的方法

命名元組namedtuple

namedtuple(typename,field_names,verbose= False,rename=False)命名元組,返回一個(gè)元組的子類,并定義了字段

field_names可以是空白符或逗號(hào)分割的字段的字符串,可以是字段的列表from?collections?import?namedtuple

point?=?namedtuple("_point",["x",?"y"])?#?point為返回的類

p?=?point(11,22)

Exp:

form?collections?import?namedtuple

Student?=?namedtuple("Student","name?age")

tom?=?Student("tom",20)

jerry?=?Student("jerry,18")

tome.name

總結(jié)

以上是生活随笔為你收集整理的python数据结构的列表_Python内置数据结构——列表list的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。