Python學習之路3-操作列表

本系列是對入門書籍《Python編程:從入門到實戰》的筆記整理,屬於初級內容。標題順序採用書中標題

1. 遍歷列表

本章主要是for循環:

Python學習之路3-操作列表

這裡有兩個值得注意的地方,一個是“冒號”:“for”關鍵字所在的行最後有一個冒號;一個是縮進問題,Python中的代碼塊都是以縮進為標準,不像C/C++,Java這樣的語言以花括號表示代碼塊。IndentationError指縮進錯誤。

2. 創建數值列表

這有使用一個重要的生成數列的函數 range() ,以及將數據轉換成列表的 list() 函數

Python學習之路3-操作列表

range()函數也常用語for循環,用於標識循環次數,或者用於生成更復雜的列表:

Python學習之路3-操作列表

對於生成列表,還有一種更簡潔的寫法,即列表解析式,如上述生成列表的代碼可以縮短為一行:

Python學習之路3-操作列表

列表解析式還可以更復雜,這裡就不再贅述了。

對數字列表執行簡單的統計計算:

求一個數字列表的最大、最小值以及所有元素之和:

Python學習之路3-操作列表

3. 使用列表的一部分

3.1 切片

切片操作用於取原始列表的一部分:

Python學習之路3-操作列表

切片操作的參數設置和range()函數的參數設置十分相似,起始,結束,步長都可以為負值,這裡先總結一條規律:如果步長為正數,則起始位置要在結束位置的左邊;若步長為負數,則起始位置要在結束位置的右邊。

3.2 複製列表

這裡有深淺複製的問題。如果直接將一個變量賦值到另一個變量,那麼內存中的數據依然只有一份,而不是兩份,這兩個變量都指向內存中同一個存放數據的內存區域,如果用C/C++的語言來描述,Python中的變量都相當於指針,這兩個變量(指針)指向的是同一片內存,對這兩個變量(指針)的操作會相互影響,因為都作用於同一內存塊,如下:

Python學習之路3-操作列表

如果想在內存中將原來的數據複製出一份新的,則需要深複製,切片操作則是實現深複製的一種方法:

Python學習之路3-操作列表

4. 元組(tuple)

和列表緊密聯繫的一個數據結構則是元組。列表非常適合用於存儲在程序運行期間可能變化的數據集,列表可以被修改。然而有時你需要創建一系列不可修改的元素,這個時候則需要用到元組。

元組用圓括號來標識,以下是聲明一個元組:

Python學習之路3-操作列表

對元組中元素的訪問以及對元組的遍歷都和對列表的操作一樣;不同的是,元組中的元素不能被改變。

雖然元組中的元素不能改變,但是元組變量的值可以改變。從C/C++的角度來看,元組變量是個指針,元組相當於一個const數組,數組雖然不能被改變,但指針可以指向別處。

Python學習之路3-操作列表

相比於列表,元組是更簡單的數據結構。如果需要存儲的一組值在程序的整個生命週期內都不變,則可使用元組。


分享到:


相關文章: