python學習之列表
之前一直對python中建立陣列型別比較矇圈,今天仔細整理加實踐了一下,代如下
#建立二維列表
n = int(input())
#建立二維列表是不是只能建立列元素一樣的
#將列表中的位置都賦值
list = [[0]*(2*n+1) for i in range(n)]
print(list)
#建立空列表
l = [[0] for x in range(n)]
for i in range(n):
for j in range(n):
l[i][j] = 1
print(l[i][j])
#陣列也是乙個定義完之後就固定長度的
# print(l[0][0])
print(l)
#這個迴圈是用來控制列表內元素的個數
上面的**輸出的結果是
下面講解一下為什麼這樣的輸出結果,上面的**中列表list和l其實已經建立成功,其中列表list建立的是乙個n行 2n+1列的列表,其中列表l建立了乙個n行1列的列表
上面的報錯是為什麼?
indexerror: list assignment index out of range代表的是陣列越界,也就是說我們在程式中訪問了未定義的記憶體,檢視
for i in range(n):
for j in range(n):
l[i][j] = 1
這一塊**,如果輸入的是n =3 我們將會讓直譯器訪問l[0][3],這樣未定義的記憶體
為什麼要這樣操作呢?
–是因為我想看看python中這樣定義陣列是動態的分配記憶體,還是靜態的分配記憶體?那上面的結果可以說明,這樣就是靜態的分配記憶體了
那我又想,如果說我不放入初始元素在列表裡,我能夠實現動態分配嗎?
現在來操作試試呢
n = int(input())
#建立二維列表是不是只能建立列元素一樣的
#將列表中的位置都賦值
# list = [[0]*(2*n+1) for i in range(n)]
# print(list)
#建立空列表
l = [ for x in range(n)]
print(l)
for i in range(n):
for j in range(n):
l[i][j] = 1
print(l[i][j])
#陣列也是乙個定義完之後就固定長度的
# print(l[0][0])
print(l)
#這個迴圈是用來控制列表內元素的個數
執行結果:
通過這種方式可以知道,雖然沒有預先在列表中放元素,列表元素也能輸出出來,但是依然不是動態分配記憶體
那麼如何正確遍歷這個列表中的元素並且改變列表中的元素值呢呢?
這樣?
n = int(input())
l = [ for x in range(n)]
print(l)
for i in range(n):
for j in range(1):
l[i][j] = 1
print(l[i][j])
#陣列也是乙個定義完之後就固定長度的
# print(l[0][0])
print(l)
#這個迴圈是用來控制列表內元素的個數
依然報錯了,為什麼?因為上面定義的是列元素為空,行元素為三個空列表的列表,就算訪問的是l[i][0],那還是訪問越界,因為列元素,沒有分配記憶體。之前我錯誤意識以為這是建立了乙個n行,1列列表的定義方式
這裡我們明白了什麼道理?
就是說,定義列表的時候,必須初始化元素,通過初始插入元素來控制給列表分配的記憶體
n = int(input())
l = [[0] for x in range(n)]
print(l)
for i in range(n):
for j in range(1):
l[i][j] = 1
print(l[i][j])
#陣列也是乙個定義完之後就固定長度的
# print(l[0][0])
print(l)
#這個迴圈是用來控制列表內元素的個數
上面我初始填入的元素是0,執行結果如下
再看如何建立n行n列列表,並且遍歷並更改列表中的元素?
n = int(input())
l = [[0 for i in range(n)] for x in range(n)]
print(l)
for i in range(n):
for j in range(n):
l[i][j] = 1
print(l[i][j])
#陣列也是乙個定義完之後就固定長度的
# print(l[0][0])
print(l)
看執行結果
寫個總結
1.建立列表需要初始化元素來分配記憶體,也就是放入用來佔位置的元素
2. x for i in range(n)這種語句可以控制前面元素比如x = 3的個數,就算前面是列表也是也可以的,很方便 ,不用敲一堆0,完美
Python學習之列表
1.list型別 用括號 表示,不同的元素之間可以逗號隔開。list在被初始化後可以被再次修改。注 如果開發者定義了一組值,並且在之後需要不斷對其進行增 刪 改等操作,則應該使用list型別。2.內建函式包括 通用函式 不僅適用數值型別的變數,還適用其他型別的變數 特定函式 只適用數值型別的變數 注...
Python學習筆記之列表
1 列表增刪改查 list.pop 列表末尾刪除資料項 list.extend 列表末尾增加資料項 list.remove 找到並刪除乙個特定的資料項 list.insert 槽編號,在特定位置前增加乙個資料項 2 for迴圈處理任意大小的列表 for 目標識別符號 in 列表 列表處理 被稱為組 ...
Python學習筆記之列表
閒暇之餘,想看看python的世界是個什麼樣子,畢竟現在這門語言十分的火熱,有著大量的學習資料以及參考書。今天看完了head first python,當然裡面的大量的練習並沒有完成,不過總體的感覺就是這門語言很強大,特別是對資料的處理方面好像有著很大的優勢,於是開啟了真正的學習之旅,這本筆記不知道...