Python學習之列表

2021-10-22 18:39:12 字數 3194 閱讀 8685

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,當然裡面的大量的練習並沒有完成,不過總體的感覺就是這門語言很強大,特別是對資料的處理方面好像有著很大的優勢,於是開啟了真正的學習之旅,這本筆記不知道...