[]是個空列表,不包含任何值,類似于空字符串''。
4.1.1 用下標取得列表中的單個值
第一個值得下標為0 ...
如果使用的下標超出了列表中值的個數,Python將給出IndexError出錯誤
下標只能是整數,不能是浮點值。 否則引發(fā)TypeError
列表可以嵌套?
4.1.2 負數下標
同樣可以使用負整數下標
-1指的是列表中最后一個下標 -2 倒數第二個
4.1.3 利用切片取得子列表
切片可以從列表中取得多個值
spam[1:4]
在一個切片中,第一個整數是切片開始處下標。第二個是切片結束處下標,不會打印結束處的值。忽略第一個下標相當于使用0或列表的開始。
4.1.4 用len()取得列表的長度
spam['cat','sss','xxx']
len(spam)
3
4.1.5 用下標改變列表中的值
4.1.6 列表連接和列表復制
[1,2,3]+['xxx','yyy']
[1,2,3,'xxx','yyy']
[1,2,3]*2
[1,2,3,1,2,3]
4.1.7 用del語句從列表中刪除值
spam=[1,2,3]
del spam[1]
spam
[2,3]
4.2.1 列表用于循環(huán)
for i in [0 ,1,2,3]:
? ? print(i)
同樣打印?
0
1
2
3
這是因為range(4)的返回值是類似列表的值,列表認為它類似于[0,1,2,3],前面的for循環(huán)實際上是在循環(huán)執(zhí)行它的子句,在每次迭代中,讓變量一次設置為列表中的值。
類似列表是指技術上稱為序列的數據結構。
常用 range(len(spam))
4.2.2 in和not in操作符
利用上述二者可以確定一個值是否在列表中。
1 in [1,2,3]
True
4.2.3 多重賦值技巧
cat=[1,2,3]
a,b,c=cat #a=1 b=2 c=3
變量的數目和列表長度必須嚴格相等 否則將給出ValueError 錯誤
4.3 增強的賦值操作
+=? -=? *=? /=? %=
4.4 方法
4.4.1 用index()方法在列表中查找值
不在列表中 就報ValueError 否則返回它的下標
4.4.2 用append()和insert()方法在列表中添加值
append()將參數添加到列表末尾,insert()方法可以在列表任意下標處插入一個值。 insert()方法第一個參數是新值的下標,第二個參數是要插入的新值
4.4.3 用remove()方法從列表中刪除值
給remove()方法傳入一個值,它將從被調用的列表中刪除。
如果刪除不存在的值 將引發(fā)ValueError 錯誤
如果出現多次,只有第一次出現的值會被刪除。
知道下標用del() 知道值用remove()
不要記錄返回值
4.4.4 用sort()方法將列表中的值排序
spam.sort()
默認從小到大,也可以指定spam.sort(reverse=True)讓sort()按逆序排序
不要記錄返回值
對字符串排序時,使用ASCII字符順序
4.5 神奇8球和列表
在源代碼中 列表時即可以跨越幾行,沒有看到結束方括號列表就沒結束 可以不加續(xù)行字符
可以在行末使用續(xù)行字符\,此時縮進并不重要。
4.6 類似列表的類型 :字符串和元組
對列表的操作可以作于字符串 : 按下標取值,切片、用于for循環(huán)、用于len(),以及用于in和not in 操作符。
4.6.1 可變和不可變數據類型
改變一個字符串的正確方法是使用切片和鏈接
4.6.2 元組數據類型
除了兩個方面,元組數據類型幾乎和列表數據類型一樣。首先,元組輸入時用圓括號()而不是[]
元組和列表主要區(qū)別是元組像字符串一樣是不可變的,不能讓他們的值修改添加和刪除。
如果元組中只有一個值,你可以在括號內該值后面跟上一個逗號 表明這種情況。
否則Python將認為,你只是在一個普通括號內輸入了一個值。
type()函數將返回括號內值的類型
4.6.3 用list()和tuple()函數來轉換類型
上述二者將返回傳遞給他們值的列表和元組版本。
4.7 引用?
當你將列表賦給一個變量時,實際上是將列表的引用付給了該變量。引用是一個值,指向某些數據。列表引用是指向一個列表的值。字典也是如此。
4.7.1 傳遞引用
...
4.7.2 copy模塊的copy()和deepcopy()函數
在處理列表和字典時,如果不希望傳遞引用可以使用copy模塊中的copy()可以用來復制列表或字典這樣的可變值。deepcopy()將同時復制他們內部的列表。
5.1 字典數據類型
字典是許多值的集合。但不想列表的小標,字典的索引使用許多不同的數據類型,不只是整數。字典的索引被稱為“鍵”,鍵及其關聯(lián)的值稱為“鍵-值”對
字典輸入時帶{}
mycat={'size':'fat','color':'gray'}
鍵是 ‘size’ ‘color’ 值是 ‘fat’,‘gray’
>>>mycat['size']
'fat'
字典也可以用整數作為鍵
5.1.1 字典和列表
不同于列表,字典中的表項是不排序的。因此 字典不能像列表那樣切片。同時判斷是否相等時,列表順序必須相同,而字典不用。
嘗試訪問字典中不存在的鍵,將導致KeyError出錯誤信息
用 in關鍵字可以判斷值是否作為鍵存在于字典中。
5.1.2 keys()、values()、和items()方法
有三個字典方法,它們將返回類似列表的值,分別對應于字典的鍵、值和鍵-值對。這些方法翻到會的值不少真正的列表,它們不能被修改,沒有append()方法。但可以用于for循環(huán)。
5.1.3 檢查字典中是否存在鍵或值
'name' in spam.keys() #spam.values() spam.items()
檢查一個值是否是字典的鍵 可以用 in not in
5.1.4 get()方法
get()有兩個參數: 要去的其值的鍵,以及如果該鍵不存在時,返回的備用值
如果不使用get()尋找沒有的鍵時會報錯,使用get()沒找到值則會返回備用值。
5.1.5 setfault()方法
傳遞給該方法的第一個參數,是要檢查的鍵。第二個參數,是如果該鍵不存在時要設置的值。如果該鍵確實存在,方法就會返回鍵的值。
5.2 漂亮打印
如果程序中導入pprint模塊,就可以使用pprint()和pformat()函數,它們將“漂亮打印”一個字典的字。
如果字典本身包含嵌套的列表或字典,pprint函數就特別有用。
如果希望得到漂亮打印的文本作為字符串而不是顯示在屏幕上,就調用print.pformat()。
5.3 使用數據結構對真實世界建模
5.3.1 井字棋盤
5.3.2 嵌套的字典和列表
6.1.1 字符串字面量
6.1.2 雙引號
字符串可以用雙引號開始和結束,就像用單引號一樣,好處就是字符串中可以使用單引號字符。
6.1.3 轉義字符
\' 單引號 \" 雙引號 \t? 制表符 \n 換行符 \\ 倒斜杠
6.1.4 原始字符串
可以在字符串開始的引號前加上r,使它成為原始字符串。“原始字符串”將完全忽略所有的轉義字符,打印出字符串中所有的倒斜杠。
6.1.5 用三重引號的多重字符串
多行字符串的起止是三個單引號或三個雙引號 三重引號中的所有引號、制表符或換行,都被認為是字符串的一部分,單引號和雙引號可直接使用。
6.1.6 多行注釋
多行字符串常常用作多行注釋
6.1.7 字符串下標和切片
下標從0開始 可以進行切片并儲存在另一個變量中。
6.1.8 字符串的in和 not in 操作符
>>>'hello' in 'hello world'
True
6.2 有用的字符串方法
6.2.1 字符串方法 upper() lower() isupper()和 islower()
upper()和lower()分別返回一個全部為大寫或小寫的新的字符串
spam.lower()
spam.islower()
isupper()和islower()判斷該字符串 至少有一個字符,并且所有字母都是大寫或小寫。返回bool類型的值。
6.2.2 isX字符串方法
isalpha() 如果只包含字母并且非空
isalnum() 如果只包含字母和數字 而且非空
isdecimal() 如果字符串只包含數字字符,并且非空
isspace() 如果字符串只包含空格、制表符和換行 并且非空
istitle() 如果字符串僅包含以大寫字母開頭、后面都是小寫字母的單詞。
6.2.3 字符串方法 startwith()和endwith()
如果他們所調用的字符串以該方法傳入的字符串開始或結束,將返回True。
6.2.4 字符串方法 join()和split()
join的方法在一個字符串上調用,參數是一個字符串列表,返回一個字符串。返回鬼字符串由傳入的列表中每個字符串連接而成。
注意 調用join()方法的字符串,被插入到列表參數中每個字符串的中間。
split()方法做的正好相反
他針對一個字符串調用,返回一個字符串列表。默認情況下,字符串按照各種空白字符分隔,也可以向split()方法傳入一個分隔字符串,指定他按照不同的字符串分割。
常用split()方法是按照換行符分割字符串。
6.2.5 用rjust()、ljust()和center()方法對齊文本
rjust()和ljust()字符串方法返回調用它們的字符串的填充版本,通過插入空格來對齊文本。這兩個方法的第一個參數是一個整數長度,用于對齊字符串。如果傳入的值小于字符串值,此方法不會起作用,也可以傳入一個值,作為空白區(qū)的填充。ljust()方法左對齊,rjust()方法右對齊,center()方法居中對齊。
6.2.6 用strip()、rstrip()和istrip()刪除空白字符
有時候希望刪除字符串左邊、右邊或兩邊的空白字符。
strip()字符串方法將返回一個新的字符串,它的開頭或末尾都沒有空白字符。
lstrip()或rstrip()方法將刪除左邊或右邊的空白字符。
有一個可選的字符串參數,指定兩邊的哪些字符應該被刪除,其中字符的順序并不重要,都會刪除。
6.2.7 用pyperclip模塊拷貝粘貼字符串