Python3學習之路3--列表、元組

列表

由於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的垃圾回收機制會在某個對象不再被使用的時候自動進行處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章