成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Python中的列表跟元組的使用教學(xué)-創(chuàng)新互聯(lián)

Python 中的 列表跟元組 的使用

在猇亭等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都做網(wǎng)站 網(wǎng)站設(shè)計制作按需制作網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,營銷型網(wǎng)站,外貿(mào)網(wǎng)站建設(shè),猇亭網(wǎng)站建設(shè)費用合理。

一、列表和元組基礎(chǔ):

列表和元組,都是一個可以放置任意數(shù)據(jù)類型的有序集合。

在很多語言中,集合的數(shù)據(jù)類型必須一致。不過,對于 Python 的列表和元組來說,并無此要求:

my_list = [66, 77, 'fe', 'cow'] # 列表中同時含有int和string類型的元素

print(my_list)

# 輸出結(jié)果: [66, 77, 'fe', 'cow']

my_tuple = ('fe_cow', 666) # 元組中同時含有int和string類型的元素

print(my_tuple)

# 輸出結(jié)果 ('fe_cow', 666)

那么它們之間有什么區(qū)別呢?

列表是動態(tài):長度大小不固定,可以隨意地增加、刪減或者改變元素。

元組是靜態(tài):長度大小固定,無法增加刪減或者改變。

下面舉個栗子:

分別創(chuàng)建一個列表和元組。對于列表很輕松的在列表中添加最后一個元素,但是相同操作元組就會報錯:

my_list = [1, 2, 3, 4]

my_list[3] = 5 # python 中索引是從0進行開始的 my_list[3] 表示訪問列表的第四個元素

print(my_list)

# 輸出結(jié)果: [1, 2, 3, 5]

my_tuple = (1, 2, 3, 4)

my_tuple[3] = 5

print(my_tuple)

# 報錯結(jié)果:

Traceback (most recent call last):

File "", line 1, in

TypeError: 'tuple' object does not support item assignment

如果想對已有的元組做"改變",那就只能重新開辟一塊內(nèi)存,創(chuàng)建新的元組了。

my_tuple= (1, 2, 3)

new_tuple = my_tuple + (4, )

print(new_tuple)

# 輸出結(jié)果: (1, 2, 3, 4)

Python 中的列表和元組都支持負數(shù)索引:

// 列表的負數(shù)索引

my_list = [1, 2, 3, 4]

my_list[-1]

4

// 元組的負數(shù)索引

my_tuple = (1, 2, 3, 4)

my_tuple[-2]

3

-1 表示最后一個元素,-2 表示倒數(shù)第二個元素,以此類推。

Python 列表和元組都支持切片操作:

// 列表切片操作

my_list = [1, 2, 3, 4]

my_list[1:3]

[2, 3]

// 元組切片操作

my_tuple = (1, 2 ,3 ,4)

my_tuple[1:3]

(2, 3)

索引從1到2,簡單理解:“前閉后開”

Python 可通過list() 和 tuple() 函數(shù)相互轉(zhuǎn)換:

// 元組轉(zhuǎn)換成列表

list((1, 2, 3))

[1, 2, 3]

// 列表轉(zhuǎn)換成元組

tuple([1, 2, 3])

(1, 2, 3)

Python 列表 和 元組的常見內(nèi)置函數(shù):

// 列表操作

my_list = [3, 2, 3, 7, 8, 1]

my_list.count(3)

2

my_list.index(7)

3

my_list.reverse()

my_list

[1, 8, 7, 3, 2, 3]

my_list.sort()

my_list

[1, 2, 3, 3, 7, 8]

// 元組操作

my_tuple = (3, 2, 3, 7, 8, 1)

my_tuple.count(3)

2

my_tuple.index(7)

3

list(reversed(my_tuple))

[1, 8, 7, 3, 2, 3]

sorted(my_tuple)

[1, 2, 3, 3, 7, 8]

count(item):表示統(tǒng)計列表 / 元組中 item 出現(xiàn)的次數(shù)。

index(item):表示返回列表 / 元組中 item 第一次出現(xiàn)的索引。

list.reverse() 和 list.sort() 分別表示原地倒轉(zhuǎn)列表和排序。

注意,元組沒有內(nèi)置的這兩個函數(shù),需要把元組轉(zhuǎn)換成列表在進行此函數(shù)的操作

reversed() 和 sorted() 同樣表示對列表 / 元組進行倒轉(zhuǎn)和排序,但是會返回一個倒轉(zhuǎn)后或者排好序的新的列表 / 元組。

二、列表和元組存儲方式差異:

// 使用__sizeof__() 查看 存儲空間

my_list = [1,2 ,3 ,4]

my_list.__sizeof__()

72

my_tuple = (1, 2, 3, 4)

my_tuple.__sizeof__()

56

可以看到,放置了相同的元素,那么元組存儲的空間卻比列表要少16字節(jié)。為什么呢?原因如下:

列表是動態(tài)的,所以它需要存儲指針,來指向?qū)?yīng)的元素(int型,8字節(jié))。

列表可變,所以需要額外存儲已經(jīng)分配的長度大小(8 字節(jié)),這樣才可以實時追蹤列表空間的使用情況,當空間不足時,及時分配額外空間。

下面描述列表空間分配過程:鄭州人流價格 http://www.zzzykdfk.com/

my_list = []

my_list.__sizeof__() // 空列表的存儲空間為40字節(jié)

40

my_list.append(1)

my_list.__sizeof__()

72 // 加入了元素1之后,列表為其分配了可以存儲4個元素的空間 (72 - 40)/8 = 4

# 記錄往后加入4個元素

my_list.append(2)

my_list.__sizeof__()

72 // 由于之前分配了空間,所以加入元素2,列表空間不變

my_list.append(3)

my_list.__sizeof__()

72 // 加入元素3,列表空間不變

my_list.append(4)

my_list.__sizeof__()

72 // 加入元素4,列表空間不變

my_list.append(5)

my_list.__sizeof__()

104 // 加入元素5之后,列表的空間不足,所以又額外分配了可以存儲4個元素的空間

為了減少列表每次的增加/刪除操作時空間分配的開銷,Python每次分配空間時,都會額外多分配一些;

這樣機制保證了其操作的高效性:增加/刪除的時間復(fù)雜度0(1);

對于元組來說,元組長度大小固定,元素不可變,所以存儲空間固定。

三、列表和元組的性能:

從上述的兩者之間的存儲方式差異,可以得出結(jié)論,元組要比列表更加輕量級一些,元組的性能速度要略優(yōu)于列表。

在Python后臺,對靜態(tài)數(shù)據(jù)做一些資源緩存。因為垃圾回收機制的存在,如果一些變量不被使用了,Python 就會回收它們所占用的內(nèi)存,返還給操作系統(tǒng),以便其他變量或其他應(yīng)用使用。

對于一些靜態(tài)變量,比如元組,它不被使用并且占用空間不大時,Python 會暫時緩存這部分內(nèi)存。下次我們再創(chuàng)建同樣大小的元組時,Python 就不用再向操作系統(tǒng)發(fā)出請求,可直接尋找內(nèi)存,而是可以直接分配之前緩存的內(nèi)存空間,這樣就能大大加快程序的運行速度。

四、列表和元組的使用場景:

如果存儲的數(shù)據(jù)和數(shù)量不變,僅需要將數(shù)據(jù)直接傳給前端渲染,那么肯定選用元組更合適。

// 比如給前端返回經(jīng)緯度

def get_location():

.....

return (longitude, latitude)

如果存儲的數(shù)據(jù)或數(shù)量是可變的,那么則用列表更合適。

// 比如給前端返回 每個增加教師的信息

teacher_list = [] // 里面存儲的是

result = DB(teacherID) // 從數(shù)據(jù)庫拿出一周內(nèi)新增教師的信息,返回的是QuerySet

for item in result:

teacher_list.append(item)

五、總結(jié):

列表和元組都是有序的,可以存儲任意的數(shù)據(jù)類型的集合,主要區(qū)別在于:

列表是動態(tài)的,長度可變,可以隨意的增加、刪減或改變元素。

列表的存儲空間略大于元組,性能略遜于元組;

元組是靜態(tài)的,長度大小固定,不可以對元素進行增加、刪減或者改變操作。

元組相對于列表更加輕量級,性能稍優(yōu);

六、list()、與 [ ] 效率有什么區(qū)別嗎?

區(qū)別在于:

list( ) 是一個函數(shù)的調(diào)用,Python 函數(shù)調(diào)用 會創(chuàng)建 堆,并且進行一系列參數(shù)檢查的操作。

[ ] 是一個 內(nèi)置的C函數(shù),可以直接調(diào)用,因此效率較高。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當前題目:Python中的列表跟元組的使用教學(xué)-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://jinyejixie.com/article22/dhohcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化網(wǎng)站導(dǎo)航、微信小程序、網(wǎng)站設(shè)計網(wǎng)站設(shè)計公司服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
收藏| 二连浩特市| 板桥市| 武山县| 巴彦淖尔市| 新津县| 商水县| 大同县| 安宁市| 穆棱市| 精河县| 桃源县| 台湾省| 绩溪县| 丹凤县| 上饶县| 甘德县| 漠河县| 永康市| 三台县| 裕民县| 蛟河市| 潮州市| 垫江县| 壤塘县| 琼海市| 雅安市| 齐河县| 洛川县| 北京市| 仲巴县| 青铜峡市| 开封县| 新宁县| 崇左市| 恩施市| 宝丰县| 高邑县| 瓮安县| 玉环县| 水城县|