元組是壹種固定長度、不可變的Python對象序列。創建元組最簡單的辦法是用逗號分隔序列值:
tuple 函數將任意序列或叠代器轉換為元組:
中括號 [] 可以獲取元組的元素, Python中序列索引從0開始 :
元組壹旦創建,各個位置上的對象是無法被修改的,如果元組的壹個對象是可變的,例如列表,妳可以在它內部進行修改:
可以使用 + 號連接元組來生成更長的元組:
元組乘以整數,則會和列表壹樣,生成含有多份拷貝的元組:
將元組型的表達式賦值給變量,Python會對等號右邊的值進行拆包:
拆包的壹個常用場景就是遍歷元組或列表組成的序列:
*rest 用於在函數調用時獲取任意長度的位置參數列表:
count 用於計量某個數值在元組中出現的次數:
列表的長度可變,內容可以修改。可以使用 [] 或者 list 類型函數來定義列表:
append 方法將元素添加到列表尾部:
insert 方法可以將元素插入到指定列表位置:
( 插入位置範圍在0到列表長度之間 )
pop 是 insert 的反操作,將特定位置的元素移除並返回:
remove 方法會定位第壹個符合要求的值並移除它:
in 關鍵字可以檢查壹個值是否在列表中;
not in 表示不在:
+ 號可以連接兩個列表:
extend 方法可以向該列表添加多個元素:
使用 extend 將元素添加到已經存在的列表是更好的方式,比 + 快。
sort 方法可以對列表進行排序:
key 可以傳遞壹個用於生成排序值的函數,例如通過字符串的長度進行排序:
bisect.bisect 找到元素應當被插入的位置,返回位置信息
bisect.insort 將元素插入到已排序列表的相應位置保持序列排序
bisect 模塊的函數並不會檢查列表是否已經排序,因此對未排序列表使用bisect不會報錯,但是可能導致不正確結果
切片符號可以對大多數序列類型選取子集,基本形式是 [start:stop]
起始位置start索引包含,結束位置stop索引不包含
切片還可以將序列賦值給變量:
start和stop可以省略,默認傳入起始位置或結束位置,負索引可以從序列尾部進行索引:
步進值 step 可以在第二個冒號後面使用, 意思是每隔多少個數取壹個值:
對列表或元組進行翻轉時,壹種很聰明的用法時向步進值傳值-1:
dict(字典)可能是Python內建數據結構中最重要的,它更為常用的名字是 哈希表 或者 關聯數組 。
字典是鍵值對集合,其中鍵和值都是Python對象。
{} 是創建字典的壹種方式,字典中用逗號將鍵值對分隔:
妳可以訪問、插入或設置字典中的元素,:
in 檢查字典是否含有壹個鍵:
del 或 pop 方法刪除值, pop 方法會在刪除的同時返回被刪的值,並刪除鍵:
update 方法將兩個字典合並:
update方法改變了字典元素位置,對於字典中已經存在的鍵,如果傳給update方法的數據也含有相同的鍵,則它的值將會被覆蓋。
字典的值可以是任何Python對象,但鍵必須是不可變的對象,比如標量類型(整數、浮點數、字符串)或元組(且元組內對象也必須是不可變對象)。
通過 hash 函數可以檢查壹個對象是否可以哈希化(即是否可以用作字典的鍵):
集合是壹種無序且元素唯壹的容器。
set 函數或者是用字面值集與大括號,創建集合:
union 方法或 | 二元操作符獲得兩個集合的聯合即兩個集合中不同元素的並集:
intersection 方法或 & 操作符獲得交集即兩個集合中同時包含的元素:
常用的集合方法列表:
和字典類似,集合的元素必須是不可變的。如果想要包含列表型的元素,必須先轉換為元組: