列表
由於python的變量沒有數據類型,因此我們可以對一個列表的元素賦不同的數據類型,比如字符串、數字、甚至可以在列表中嵌套另一個列表。
- 列表的增刪改查以及切片
# Author: TQSong
empty = [] # 創建一個空列表
various = ["wnn", 123, ["good", 456]] # 創建一個帶有各種類型數據的列表
names = ["wnn", "tqs", "123", "good", "girl", "boy"] # 創建一個列表
print(names) # ['wnn', 'tqs', '123', 'good', 'girl', 'boy']
print(names[0], names[3]) # wnn good
names.append("456") # 對列表進行元素追加,append只支持一個參數
print(names) # ['wnn', 'tqs', '123', 'good', 'girl', 'boy', '456']
names.extend([111, 222]) # 使用extend向末尾添加多個元素
print(names) # ['wnn', 'tqs', '123', 'good', 'girl', 'boy', '456', 111, 222]
names.pop() # 彈出最後一個元素
names.pop() # 再次彈出最後一個元素
print(names) # ['wnn', 'tqs', '123', 'good', 'girl', 'boy', '456']
names.insert(1, "789") # 在位置1插入元素"789"
print(names) # ['wnn', '789', 'tqs', '123', 'good', 'girl', 'boy', '456']
names[3] = "hello" # 修改names[3]
print(names) # ['wnn', '789', 'tqs', 'hello', 'good', 'girl', 'boy', '456']
names.remove("789") # 刪除給定的元素,如果元素不存在會報錯
print(names) # ['wnn', 'tqs', 'hello', 'good', 'girl', 'boy', '456']
name = names.pop() # 默認取出並刪除最後一個元素,也可以加索引刪除指定位置
print(name) # "456"
print(names) # ['wnn', 'tqs', 'hello', 'good', 'girl', 'boy']
names.pop(2) # 默認刪除最後一個元素,也可以加索引刪除指定位置
print(names) # ['wnn', 'tqs', 'good', 'girl', 'boy']
print(names[1]) # 獲取位置1的元素 "tqs"
# del的用法十分廣泛,它不僅使用於列表的某個元素,它也可以刪除整個列表
del names[1] # 刪除names[1]
print(names) # ['wnn', 'good', 'girl', 'boy']
print(names.index("wnn")) # 計算索引並輸出
print(names.count("wnn")) # 計數"wnn"的個數
# 列表切片操作,冒號左邊表示開始位置,右邊表示結束位置,左閉右開
# 切片並不會改變列表自身的組成結構和數據,它其實是爲列表創建一個新的拷貝並返回
print(names[0:3]) # 0-3,前閉後開
print(names[-1]) # 取最後一個,當索引值爲負數時,列表從反向索引
print(names[-2]) # 取倒數第二個
print(names[-3]) # 取倒數第三個
print(names[-3:-1]) # 只有-3 -2,數字從小到大
print(names[-3:]) # 最後三個,冒號後面不填表示遍歷到末尾
print(names[:2]) # 前面2個,冒號前面不填表示從0開始遍歷
print(names[:]) # 遍歷整個列表
# 列表還可以接受第三個參數==》步長
print(names[::2]) #以步長爲2遍歷整個列表,步長爲負數表示反向遍歷
切片輸出結果如下:
切片前的結果輸出如下:
-
列表與常用操作符配合
- 列表可以使用關係運算符(< > == !=)進行關係運算
- 允許把多個列表通過(+)連接操作符拼接在一起,相當於extend方法的實現,但是連接操作符並不能實現添加元素的操作
list1 = [123, 456] list2 = [111, 222] print(list1 + list2)
輸出結果:
- 乘號操作符(*)可以複製整個列表,表達式中的數字表示覆制多少份,舉例:
list1 = [123, 456] print(list1 * 3)
輸出結果:
元組
元組和列表最大的區別是:元組只可讀,不可寫,元組只可以被訪問,不能被修改。列表和元組的另一個顯著區別就是創建列表用的是中括號,而創建元組使用的是小括號
tuple1 = (1, 2, 3, 4, 5, 6)
print(type(tuple1))
print(tuple1)
訪問元組的方式與列表無異,也是通過索引值訪問到一個或多個(切片)元素,如果想要元組中只包含一個元素,可以在該元素後面添加一個逗號(,)來實現,並且小括號也不是決定是否是元組,逗號纔是關鍵,小括號只是起到補充作用,舉例如下:
tuple2 = (123,)
tuple3 = 123,
print(tuple2 == tuple3)
輸出:
可以發現有沒小括號並不是決定性的,再如:
print(8 * (8))
print(8 * (8,))
輸出:
由於元組是可讀的,所以在一般情況下不能進行更新和刪除操作,但是可以創建另一個同名元組去代替原先的元組,使用切片來實現,比如:
tuple4 = (1, 2, 3, 4, 5, 6)
print(id(tuple4))
print(tuple4)
tuple4 = (1, 2) + tuple4[2:]
print(id(tuple4))
print(tuple4)
id函數表示每個變量名的一個絕對的身份值,可以看到tuple4的內容完全一樣,但是其id不一樣,說明只是同名覆蓋了。
刪除整個元組只需要del語句,但是在實際使用中並不會常見,因爲python的垃圾回收機制會在某個對象不再被使用的時候自動進行處理。