日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python列表嵌套常見坑點及解決方案

瀏覽:35日期:2022-07-09 11:13:53

1.嵌套列表

Python中有一種內置的數據類型叫列表(list),它是一種容器,可以用來承載其他的對象(準確的說是其他對象的引用),列表中的對象可以稱為列表的元素,很明顯我們可以把列表作為列表中的元素,這就是所謂的嵌套列表。

嵌套列表可以模擬出現實中的表格、矩陣、2D游戲的地圖(如植物大戰僵尸的花園)、棋盤(如國際象棋、黑白棋)等。

2.識別坑點

在使用嵌套的列表時要小心,否則很可能遭遇非常尷尬的情況,下面是一個小例子。

def main(): names = [’關羽’, ’張飛’, ’趙云’, ’馬超’, ’黃忠’] subjs = [’語文’, ’數學’, ’英語’] scores = [[0] * 3] * 5 for row, name in enumerate(names): print(’請輸入%s的成績’ % name) for col, subj in enumerate(subjs): scores[row][col] = float(input(subj + ’: ’)) print(scores)if __name__ == ’__main__’: main() names = [’關羽’, ’張飛’, ’趙云’, ’馬超’, ’黃忠’] subjs = [’語文’, ’數學’, ’英語’] scores = [[0] * 3] * 5 for row, name in enumerate(names): print(’請輸入%s的成績’ % name) for col, subj in enumerate(subjs): scores[row][col] = float(input(subj + ’: ’)) print(scores)if __name__ == ’__main__’: main()

我們希望錄入5個學生3門課程的成績,于是定義了一個有5個元素的列表,而列表中的每個元素又是一個由3個元素構成的列表,這樣一個列表的列表剛好跟一個表格是一致的,相當于有5行3列。

接下來我們通過嵌套的for-in循環輸入每個學生3門課程的成績。程序執行完成后我們發現,每個學生3門課程的成績是一模一樣的(尷尬),而且就是最后錄入的那個學生的成績。

3。區分兩個概念

要想把這個坑填平,我們首先要區分對象和對象的引用這兩個概念,而要區分這兩個概念,還得先說說內存中的棧和堆。

我們經常會聽人說起“堆棧”這個詞,但實際上“堆”和“棧”是兩個不同的概念。眾所周知,一個程序運行時需要占用一些內存空間來存儲數據和代碼,那么這些內存從邏輯上又可以做進一步的劃分。

對底層語言(如C語言)有所了解的程序員大都知道,程序中可以使用的內存從邏輯上可以為五個部分,按照地址從高到低依次是:棧(stack)、堆(heap)、數據段(data segment)、只讀數據段(static area)和代碼段(code segment)。

棧用來存儲局部、臨時變量,以及函數調用時保存現場和恢復現場需要用到的數據,這部分內存在代碼塊開始執行時自動分配,代碼塊執行結束時自動釋放,通常由編譯器自動管理。

堆的大小不固定,可以動態的分配和回收,因此如果程序中有大量的數據需要處理,這些數據通常都放在堆上,如果堆空間沒有正確的被釋放會引發內存泄露的問題,而像Python、Java等編程語言都使用了垃圾回收機制來實現自動化的內存管理(自動回收不再使用的堆空間)。

4。小例子

所以,下面的代碼中,變量a并不是真正的對象,它是對象的引用,相當于記錄了對象在堆空間的地址,通過這個地址我們可以訪問到對應的對象。

a = object()b = [’apple’, ’pitaya’, ’grape’]b = [’apple’, ’pitaya’, ’grape’]

同理,變量b是列表容器的引用,它引用了堆空間上的列表容器,而列表容器中并沒有保存真正的對象,它保存的也僅僅是對象的引用。

知道了這一點,我們可以回過頭看看剛才的程序,我們對列表進行[[0]* 3] * 5操作時,僅僅是將[0, 0, 0] 這個列表的地址進行了復制,并沒有創建新的列表對象。

所以,容器中雖然有5個元素,但是這5個元素引用了同一個列表對象。這一點可以通過id函數檢查scores[0]和scores[1]的地址得到證實。在此我們舉一個小例子,讀者朋友們可以敲一敲加深印象。

a = [[0]*3]*5id(a[0])id(a[1])# id相等id(a[1])# id相等

5。正確代碼

所以,正確的代碼應該按照如下的方式進行修改。

def main(): names = [’關羽’, ’張飛’, ’趙云’, ’馬超’, ’黃忠’] subjs = [’語文’, ’數學’, ’英語’] scores = [[]] * 5 for row, name in enumerate(names): print(’請輸入%s的成績’ % name) scores[row] = [0] * 3 #變為不再嵌套 for col, subj in enumerate(subjs): scores[row][col] = float(input(subj + ’: ’)) print(scores)if __name__ == ’__main__’: main()’關羽’, ’張飛’, ’趙云’, ’馬超’, ’黃忠’] subjs = [’語文’, ’數學’, ’英語’] scores = [[]] * 5 for row, name in enumerate(names): print(’請輸入%s的成績’ % name) scores[row] = [0] * 3 #變為不再嵌套 for col, subj in enumerate(subjs): scores[row][col] = float(input(subj + ’: ’)) print(scores)if __name__ == ’__main__’: main()

或者

def main(): names = [’關羽’, ’張飛’, ’趙云’, ’馬超’, ’黃忠’] subjs = [’語文’, ’數學’, ’英語’] scores = [[0] * 3 for _ in range(5)] for row, name in enumerate(names): print(’請輸入%s的成績’ % name) scores[row] = [0] * 3 for col, subj in enumerate(subjs): scores[row][col] = float(input(subj + ’: ’)) print(scores)if __name__ == ’__main__’: main() names = [’關羽’, ’張飛’, ’趙云’, ’馬超’, ’黃忠’] subjs = [’語文’, ’數學’, ’英語’] scores = [[0] * 3 for _ in range(5)] for row, name in enumerate(names): print(’請輸入%s的成績’ % name) scores[row] = [0] * 3 for col, subj in enumerate(subjs): scores[row][col] = float(input(subj + ’: ’)) print(scores)if __name__ == ’__main__’: main()

以上就是使用嵌套列表需要注意的問題及解決措施,希望大家多多總結,以此避免在使用嵌套列表或者復制對象時可能遇到的坑。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91欧美日韩| 美女视频一区在线观看| 亚洲一级淫片| 国产综合精品一区| 天堂资源在线亚洲| 亚洲一区二区免费在线观看| 久久亚洲国产精品一区二区| 欧美日韩1区2区3区| 欧美一级鲁丝片| 久久亚洲二区| 中文一区一区三区免费在线观 | 青青草精品视频| 中文欧美日韩| 国产精品密蕾丝视频下载| 国产网站在线| 国产丝袜一区| 日韩精品福利一区二区三区| 国产精品久久久久久久久久妞妞| 天堂8中文在线最新版在线| 国产情侣一区| 午夜在线精品| 日韩毛片网站| 天堂资源在线亚洲| 电影91久久久| 亚洲欧美视频一区二区三区| 国产欧美日韩精品一区二区免费 | 蜜桃精品视频| 亚洲一区二区av| 久久久久久久久久久9不雅视频| 国产精品成人3p一区二区三区| 蜜臀91精品国产高清在线观看| 国产精品久久久久av蜜臀| 爽好久久久欧美精品| 麻豆中文一区二区| 国产精品毛片久久久| 成人午夜在线| 久久人人88| 国产一区日韩一区| 99久久亚洲精品蜜臀| 亚洲高清成人| 国产亚洲激情| 日韩一区欧美二区| 免费视频久久| 欧美日韩18| 国产精品久久久久久久免费软件| 风间由美中文字幕在线看视频国产欧美| 国产欧美精品| 国产日韩高清一区二区三区在线 | 麻豆精品视频在线| 国产一精品一av一免费爽爽| 日韩在线视频一区二区三区| 久久国产三级精品| 国产精品中文| 久久国产生活片100| 国产精品久久久久毛片大屁完整版| 日韩中文字幕无砖| 欧美精品不卡| 精品国产一级| 亚洲综合电影| 蜜桃视频免费观看一区| 欧美中文日韩| 国产一区二区精品久| 国产极品嫩模在线观看91精品| 久久精品国产亚洲一区二区三区| 亚洲天堂av影院| 久久在线电影| 美女视频网站久久| 美国三级日本三级久久99| 一区久久精品| 国产精品久久久久久久久久久久久久久 | 久久影院一区二区三区| 婷婷激情综合| 日韩88av| 精品美女视频| 国产一区二区三区网| 欧美综合精品| 欧美色综合网| 日韩精品视频网| 亚洲资源在线| 欧美日韩一区二区三区不卡视频 | 精品一区二区三区在线观看视频| 国精品一区二区| 91久久国产| 国际精品欧美精品| 亚洲日产av中文字幕| 日韩精品91亚洲二区在线观看| 欧美日韩视频一区二区三区| 麻豆成人综合网| 日本a口亚洲| 亚洲激情中文在线| 色黄视频在线观看| 国产另类在线| 亚洲一区网站| 欧美一区二区三区免费看| 亚洲国产一区二区三区在线播放| 日韩欧美一区免费| 在线看片福利| 亚洲成a人片| 午夜av成人| 欧美色图国产精品| 亚洲综合电影一区二区三区| 国产视频一区在线观看一区免费| 97久久亚洲| 伊人久久视频| 欧美日韩亚洲三区| 国产一区二区三区不卡视频网站 | 国产一区一一区高清不卡| 久久精品伊人| 国产精品欧美一区二区三区不卡| 国产精品白丝av嫩草影院| 精品香蕉视频| 久久蜜桃精品| 日本v片在线高清不卡在线观看| 日韩欧美视频专区| 中文字幕免费精品| 美女尤物国产一区| 黑人精品一区| 免费在线观看视频一区| 国产精品videossex| 久久影视三级福利片| 麻豆91在线播放| 日韩av网站在线免费观看| 久久精品国产免费| 亚洲视频二区| av亚洲一区二区三区| 日韩欧美四区| 欧美日韩国产一区二区三区不卡 | 红桃视频欧美| 国产欧美丝祙| 欧美日韩国产传媒| 国产精品免费99久久久| 欧美一级网址| 精品欧美久久| 91精品日本| 不卡中文一二三区| 动漫av一区| 国产亚洲欧美日韩精品一区二区三区 | 日韩视频免费| 国内自拍视频一区二区三区| 国产伦理一区| 成人av二区| 亚洲国产福利| 国产精品白丝av嫩草影院| 婷婷中文字幕一区| 91青青国产在线观看精品| 国产探花一区在线观看| 亚洲视频二区| 91av亚洲| 蜜臀久久99精品久久一区二区| 精品国产一区二区三区性色av| 日韩免费精品| 日韩精品乱码av一区二区| 免费av一区| 136国产福利精品导航网址| 91综合网人人| 午夜久久黄色| 天堂av在线一区| 日韩精品一二三| 国产精品普通话对白| 久久男女视频| 欧美高清一区| 99日韩精品| 久久不见久久见免费视频7| 久久gogo国模啪啪裸体| 日韩欧美久久| 久久国产婷婷国产香蕉| 欧美日韩网址| av最新在线| 亚洲深夜影院| 欧美日韩一视频区二区| 日韩欧美中文| 黄色欧美日韩| 久久亚洲国产精品一区二区| 日韩亚洲一区在线| 99国产精品视频免费观看一公开 | 日本国产一区| 国产精品地址| 亚洲91精品| 欧美一区成人| 青青久久av| 日本中文字幕不卡| 精品国产乱码| 国产一区二区精品| av中文资源在线资源免费观看| 亚洲精品成人一区| 波多视频一区| 玖玖精品视频| 国产传媒在线| 日韩精品91亚洲二区在线观看| 99视频精品视频高清免费| 欧美天堂在线| 国产亚洲福利| 国产精久久久| 不卡视频在线| 国内自拍视频一区二区三区| 欧美+日本+国产+在线a∨观看| 水蜜桃精品av一区二区| 亚洲小说春色综合另类电影| 久草免费在线视频| 亚洲一区二区三区无吗|