python list初始化技巧


一維列表

# 初始化遞增的list,與L = [i for i in range(10)] 效果相同
L = range(10)  
# print(L)
# [0,1,2,3,4,5,6,7,8,9]
#初始化每項為0的一維列表
L = [0] * 5
# print(L)
#[0,0,0,0,0]

二維列表

L = [[0] * 5 for i in range(5)]
#print(L)
#[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

這里需要注意,雖然L = [[0] * 5] * 5,也輸出同樣的效果,但是萬萬不能這樣做!

因為[0] * 5是一個一維列表的對象,再* 5的話只是把對象的引用復制了3次。什么意思呢,就是如果我們將L[0][0] = 1,再輸出L如下:

L = [[0] * 5] * 5
L[0][0] = 1
#print(L)
#[[1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]]

我們只是想改變L[0][0],結果L[[n][0]全部改變了!這回知道為啥不能這么做了吧!

所以對於一位列表初始化,也建議大家用L = [[0] for i in range(5)]來代替L = [[0] * 5]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM