列表數據類型及元組,列表和元且可以包含多個值,可以用它們將數據安排成層次結構。
4.1 列表數據類型
列表是一個值,包含多個字構成的序列。如:
['cat', 'bat', 'rat','elephant'] [1, 2, 4] ['hello', 3.14, True, None, 42]
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam
['cat', 'bat', 'rat', 'elephant']
用下標取得列表中的單個值,下標從0開始,如spam[0]='cat', spam[3]='elephant'
負數下標: spam[-1]='elephant'
利用切片取得子列表:spam[1:4],在一個切片中,第一個整數是切片開始處的下標,第二個整數是切片結束處的下標。切片向上增長,直至第二個下標的值,但不包括它。spam[1:4] # ['bat', 'rat', 'elephant'] spam[0:3] #['cat', 'bat', 'rat']
用len()取列表長度 len(spam) #4
用下標改變列表中的值: spam #['cat', 'bat', 'rat', 'elephant'] spam[1]='tiger' #['cat', 'tiger', 'rat', 'elephant']
列表連接: [1,2,3] + ['a',b','c'] #[1,2.3,'a','b','c']
列表複製:[1,2,3] * 4 # [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
用del語句從列表中刪除值: del spam[2] # ['cat', 'bat', 'elephant']
列表用於循環: for i in ranage(len(spam)):
print(spam[i])
in 和 not in 操作符: 'dog' in spam # False
'dog' not in spam #True
多重賦值技巧: cat = ['fat', 'black', 'loud']
size, color, dispostion = cat
變量數的數目和列表的長度必須嚴格相等,否則出錯。
增強賦值操作: spam = 42; spam += 1 #43
列表的方法:
1) 用index()方未能在列表中查找值, 該值存在於列表中,返回它的下標,否則,就報valueError錯誤。
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>>spam.index('bat') # 1
2)用append()和insert()方法在列表中添加值,沒有返回值,返回值爲None
append()添加到列表末尾, insert()在列表中任意下標處插入一值。
spam.append('tiger') # ['cat', 'bat', 'rat', 'elephant', 'tiger']
spam.insert(2, 'tiger') # ['cat', 'bat', 'tiger', 'rat', 'elephant']
3) 用remove()方法從列表中刪除值
spam = ['cat', 'bat', 'tiger', 'rat', 'elephant']
spam.remove('rat') # ['cat', 'bat', 'tiger', 'elephant']
4) 用sort()方法將列表中的值排序
>>> spam
['cat', 'tiger', 'rat', 'elephant']
>>> spam.sort()
>>> spam
['cat', 'elephant', 'rat', 'tiger']
sort(reverse=True)表示按降序 ,sort(reverse=True)表示按升序
>>> spam.sort(reverse=True)
>>> spam
['tiger', 'rat', 'elephant', 'cat']
類似列表的類型: 字符串和元組
可變和不可變數據類型: 列表是“可變的“的數據類型, 可添加、刪除和修改
字符串是”不可變的”數據類型,只能使用切片和連接構造一個“新的”字符串。
元組數據類型: 元組輸入時用圓括號(),而不是方括號[]。使用方法與列表一樣。
eggs = ('hello', 23, 0.5)
但元組與列表主要區別在於: 元組像字符串一樣是不可變的。
用list()和tuple()函數來轉換類型
tuple():將列表轉換成元組
>>> tuple(['cat', 'dog', 5])
('cat', 'dog', 5)
list(): 將元組轉換成列表
>>> list(('cat', 'dog', 5))
['cat', 'dog', 5]
copy模塊的copy()和deepcopy()函數
需要import copy
copy.copy() : 可以用來複制列表或字典這樣的可變值,而不是複製引用
copy.deepcopy(): 還未體現到與copy.copy()有什麼區別? 希望知道的朋友告知,謝謝!