s = 'python' L = list(s) L ['p', 'y', 't', 'h', 'o', 'n']
l = ['p', 'y', 't', 'h', 'o', 'n'] l type(l) ['p', 'y', 't', 'h', 'o', 'n'] list
列表:有序的序列,因此每個數據都有惟一對應的索引值。
第一個元素對應的索引值是0,和字符串是同樣的python
語法:列表[start:stop:step]app
Examples:設計
list1 = ['life', 'is', 'short', 'I', 'use', 'python'] list1[2] shortlist2= [1, 2, 3, 'Hello', [1, 2, [1, [1, '新中國', 3], 3], 4, 5] ] list2[4][2][1] [1, '新中國', 3]
經常使用的5種方法code
list.append(要添加元素) | 在列表末尾添加元素 |
---|---|
list.extend(要添加的元素) | 在列表末尾添加列表 |
list.insert(插入後的索引,插入的對象) | 在列表制定位置插入對象 |
Examples:htm
list1 = ['life', 'is', 'short'] list2 = ['I', 'use', 'python' ] list1.extend(list2) lsit1 ['life', 'is', 'short', 'I', 'use', 'python']list1 = ['life', 'is', 'I', 'use', 'python'] list1.insert(2,'short') lsit1 ['life', 'is', 'short', 'I', 'use', 'python']
del 列表名[要刪除元素的索引值] | 刪除對應索引的元素 |
---|---|
列表名.clear() | 清空列表全部元素 |
列表名.pop(要刪除元素的索引值) | 默認刪除最後一個,並返回這個被刪除的元素。 |
列表名.remove(元素名) | 用於移除列表中某個值的第一個匹配項 |
in 和 not in | 判斷元素存在否 |
---|---|
列表.index(尋找的對象,開始索引,結束索引) | 元素首次出現的索引 |
列表.count(尋找的對象) | 得到某個元素元素出現次數 |
Examples:對象
a=[1,'a', [2, 5]] 2 in a Falsea=['我','愛','北','京','天','安','門','天','安','門',] a.count("門") 2
reverse的英文意思是翻轉,若是填寫了reverse=True就意味着列表會降序排列blog
Examples:排序
list1 = [1, 9, 7, 6, 5, 8, 6, 8] list1.sort() list1 [1, 5, 6, 6, 7, 8, 8, 9] # 比較對象數據類型一致,不一樣的數據類型之間沒有某種維度上的大小比較
淺拷貝
淺拷貝只拷貝容器中元素的地址
淺拷貝是在另外一塊地址中建立一個新的變量或容器,可是容器內的元素的地址均是源對象的元素的地址的拷貝。
也就是說新的容器中指向了舊的元素( 新瓶裝舊酒 )這裏新的容器能夠是列表或字典等索引
深拷貝
深拷貝,徹底拷貝了一個副本,容器內部元素地址都不同(有特定要求)
對於元素爲不可變類型,並無開闢新的地址
對於元素爲可變類型 ,則從新開闢新的地址
小結:對於深拷貝,目的就是要建立一個玩玩全全獨立的副本,就意味着全部的一切都應該在新的地址上。
一、對於列表或者字典自己,深拷貝結果下,地址是改變了的,也就是說瓶子是換新了的 。
二、全部可變類型的元素也是有了新的地址的。
三、對於不可變類型的元素,地址沒有變,那豈不是相互有影響?不,若是你改變了不可變類型,就會在新的地址下儲存新的數據了,也是沒有影響的。
總之,底層設計的很是合理。
中間設計代碼驗證可參考Python基礎入門—字典dict相關內容