- 1.列表
- 1.1取單個值
- 1.2切片獲取子列表
- 1.3用len()函數獲取列表長度
- 1.4列表的循環
- 1.5列表的鏈接和復制
- 1.6列表的增、刪、查
- 1.7列表的排序——sort()方法
- 2.字符串
- 2.1 字符串的表示
- 2.2 下標和切片
- 2.3 in和not in 操作
- 2.4 常用字符串方法
- 2.5 pyperclip模塊 —— 拷貝粘貼字符串
- 3.元組tuple
- 3.1 概念
- 3.2 列表和原子互相轉換類型
- 4.字典
- 4.1 字典的特性
- 4.2 添加一個新的鍵值對
- 4.3 查找
- 4.4 循環
- 5.copy模塊
1. 列表
“列表”是一個值,術語“列表值”指的是列表本身,而不是指列表值之內的那些值。
列表值看起來像這樣:['cat','bat','rat','elephant']
列表中的值也稱為“表項”。表項用逗號分隔。
列表值本身包含多個值。[]是一個空列表,不包含任何值。
1.1 取單個值/修改值
利用下標來取值,eg:list[index] 取列表list第index+1個值
修改單個值即 list[index] = newvar
負數下標
雖然下標從0開始并向上增長,但也可以用負整數作為下標。整數值?1指的是列表中的最后一個下標,?2指的是列表中倒數第二個下標,以此類推。
1.2 切片獲取子列表
“切片”可以從列表中取得多個值,結果是一個新列表。切片輸入在一對方括號中,像下標一樣,但它有兩個冒號分隔的整數。spam[1:4]是一個列表的切片。在一個切片中,++第一個整數是切片開始處的下標。第二個整數是切片結束處的下標。切片向上增長,直至第二個下標的值,但不包括它。++
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[ 0: 4]
['cat', 'bat', 'rat', 'elephant']
>>> spam[ 1: 3]
['bat', 'rat']
>>> spam[ 0:- 1]
['cat', 'bat', 'rat']
>>> spam[: 2]
['cat', 'bat']
>>> spam[ 1:]
['bat', 'rat', 'elephant']
>>> spam[:]
['cat', 'bat', 'rat', 'elephant']
也可以利用切片修改列表某一段的值:
list = [1,2,3,4,5]
list[1:2] = [3, 1]
1.3 用len()函數獲取列表長度
list=[1,2,3,4]
len(list)
1.4 列表的循環
- 常見迭代
for i in [1,2,3,4]
print(1)
- 下標迭代
list[1,2,3,4]
for i in rang(len(list))
print(list[i])
1.5 列表的鏈接和復制
+操作符可以連接兩個列表,得到一個新列表。*操作符可以用于一個列表和一個整數,實現列表的復制。
list = [1,2,3,4]
linkList = list + [5,6,7,8]
copyList = list * 2
print(linkList)
print(copyList)
得到:
1,2,3,4,5,6,7,8
1,2,3,4,1,2,3,4
1.6 列表的增、刪、查
1.6.1 插入
-
append()方法
在列表末尾添加一個新值
-
insert() 方法
在列表任意下標處添加一個新值list.insert(index, var)
1.6.2 刪除值
-
del關鍵字
list = [1,2,3,4] del list[0] print(list)
得到:
2,3,4 -
remove()方法
list.remove(var)
刪除不存在的值會導致ValueError錯誤,若同一個值存在多次,只有第一次出現的值會被刪除
1.6.3 查找
-
in和not in
'a' in ['a','b','c','d']
得到True
'a' not in ['a','b','c','d']
得到False
-
index()方法
index()方法傳入一個值,如果該值存在于列表中,就返回它的下標。如果該值不在列表中,Python就報ValueError。
1.7 列表的排序——sort()方法
spam=[2,5,3.14,1,-7]
spam.sort()
print(spam)
spam=['ants','cats','dogs','badgers','elephants']
spam.sort()
print(spam)
得到:
[-7,1,2,3.14,5]
['ants','badgers','cats','dogs','elephants']
也可以指定reverse關鍵字參數為True,讓sort()按逆序排序
spam.sort(reverse=True)
print(spam)
得到:
['elephants','dogs','cats','badgers','ants']
注意
- sort()方法對原列表排序。不要寫出spam=spam.sort()這樣的代碼,試圖記錄返回值。
- 其次,不能對既有數字又有字符串值的列表排序,因為Python不知道如何比較它們。
- sort()方法對字符串排序時,使用“ASCII字符順序”,而不是實際的字典順序。即大寫字母排在小寫字母之前。
得到spam=['Alice','ants','Bob','badgers','Carol','cats'] spam.sort() print(spam)
['Alice','Bob','Carol','ants','badgers','cats']
如果需要按照普通的字典順序來排序,就在sort()方法調用時,將關鍵字參數key設置為str.lower。spam=['a','z','A','Z'] spam.sort(key=str.lower) >>>spam['a','A','z','Z']
2. 字符串
字符串和列表很相似對于列表的許多操作也可以用于字符串:按下表取值、切片、for循環、len()、in和not in。
字符串是不可變的數據類型,如果對字符串的某一個字符重新賦值,將會報TypeError錯誤。
2.1 字符串的表示
以單引號開始單引號結束,或以雙引號開始雙引號結束。
- 轉義字符:\
字符串中的特殊符號如:'、" 可以用',"表示 - 原始字符串
在字符串開頭加r,使之變為原始字符串,原始字符串忽略所有轉義字符
輸出為:That's a catprint(r'That\'s a cat')
- 多行字符串:三個引號包裹字符串 \
多行字符串也常用作多行注釋(#表示單行注釋),即定義一個無引用的多行字符串。s = """Dear Alice, Eve's cat has been arrested for catnapping, cat burglary, and extortion. Sincerely, Bob """
2.2 下標和切片
字符串像列表一樣,可以使用下標和切片。
2.3 in和not in 操作
像列表一樣,in和not in操作也可以用于符串。
2.4 常用字符串方法
- upper() 返回一個新字符串,小寫字母被替換為大寫字母。
- lower() 返回一個新字符串,大寫字母被替換為小寫字母。
- isupper() 是否所有字母都是大寫。
- islower 是否所有字母都是小寫。
- isalpha() 是否字符串只包含字母,并且非空。
- isalnum() 是否字符串只包含字母和數字,并且非空。
- isdecimal() 是否字符串只包含數字字符,并且非空。
- isspace() 是否字符串只包含空格、制表符和換行,并且非空。
- istitle() 是否字符串僅包含以大寫字母開頭、后面都是小寫字母的單詞。
- startswith(str) 是否以str開頭。
- endswith(str) 是否以str結束。
- str.join(list) 返回list拼接而成的字符串,在每個元素之間插入str。
- split(str) 與join方法相反,返回一個列表,str可以不傳,默認以空白字符分割,
- rjust(len, char)、ljust(len,char)、center(len,char)對齊文本。分別表示右對齊、左對齊和居中放置于長度為len的字符串中。char指char類型,即單個字符;可以不傳char,不傳填充空字符,傳char填充char。
>>> "Hello world".ljust(20) 'Hello world ' >>> "Hello world".rjust(20) ' Hello world' >>> "Hello world".center(20) ' Hello world ' >>> "Hello world".ljust(20,"=") 'Hello world=========' >>> "Hello world".rjust(20,"=") '=========Hello world' >>> "Hello world".center(20,"=") '====Hello world====='
- strip()、rstrip()、 lstrip()刪除空白字符。返回一個新的字符串,stip()刪除開頭結尾的空白字符。rstrip()和了lstrip()分別刪除左邊和右邊的空白字符。
>>> " Hello world ".strip() 'Hello world' >>> " Hello world ".lstrip() 'Hello world ' >>> " Hello world ".rstrip() ' Hello world' >>> " Hello world **".rstrip("*") ' Hello world ' >>> " Hello world **".rstrip("**") ' Hello world ' >>> " Hello world **".rstrip("**8") ' Hello world ' >>> " Hello world **".rstrip("**8**") ' Hello world ' >>> " Hello world **".rstrip("-=") ' Hello world **' >>> " Hello world **".rstrip("-=*") ' Hello world ' >>> " Hello world = *-*=".rstrip("-=*") ' Hello world = '
2.5 pyperclip模塊 —— 拷貝粘貼字符串
pyperclip模塊有copy()和paste()函數,可以向計算機的剪貼板發送文本,或從它接收文本。
3. 元組tuple
3.1 概念
除了以下兩點,元組于列表幾乎一樣:
- 元組輸入時用(),而不是[];
- 元組是不可變的。因為不可變,使用元組比使用列表更快
注意:
如果元組只有一個值,可以再括號內值的后面跟一個",",告訴Python這是一個元組
3.2 列表和原子互相轉換類型
使用list() 和 tuple()函數來轉換類型
list = [1,2,3,4]
tuple = (1,2,3,4)
listCopy = lis(tuple)
tupleCopy = tuple(list)
4. 字典
“字典”是許多值的集合。字典的索引被稱為“鍵”,鍵及其關聯的值稱為“鍵-值”對。在代碼中,字典輸入時帶花括號{}。
myCat={'size':'fat','color':'gray','disposition':'loud'}
通過鍵值開訪問這些值:
>>>myCat[color]
gray
4.1 字典的特性
- 鍵-值對是無序的。
因此輸入的順序并不重要,也無法像列表一樣切片。 - 嘗試訪問字典中不存在的鍵,將導致KeyError。
- 可以用任意值做為鍵
4.2 添加一個新的鍵值對
dic[newKey] = newValue
4.3 查找
4.3.1 字典方法:keys()、values()、items()
有3個字典方法,返回類似列表的值,keys()返回鍵、values()返回值、items()返回鍵-值對。這些方法返回的值不是真正的列表,它們不能被修改,沒有append()方法。但這些數據類型(分別是dict_keys、dict_values和dict_items)可以用于for循環。
4.3.2 關鍵字in
- 查看某個值是都作為鍵存在于字典中
或birthdays={'Alice':'Apr1','Bob':'Dec12','Carol':'Mar4'} print('Alice' in birthdays)
birthdays={'Alice':'Apr1','Bob':'Dec12','Carol':'Mar4'} print('Alice' in birthdays.key())
- 查看某個值是都作為值存在于字典中
birthdays={'Alice':'Apr1','Bob':'Dec12','Carol':'Mar4'} print('Dec12' in birthdays.values())
4.3.3 get() 方法
get(key,default):獲取key對應的值嗎,如果不存在,返回default。
4.3.4 setdefault() 方法
setdefault('color', 'white')
為某一鍵設置默認值,沒有時使用該默認值
4.4 循環
myCat = {'color':'red','name':'Kitty','age':'1'}
for k, v in myCat:
print('Key:' + str(k) + " Value:" + str(v))
5. copy模塊
- 淺拷貝
import copy
list = [1,4,5,6]
copyList = copy.copy(list)
- deepcopy
如果要復制的列表中包含了列表,那就使用copy.deepcopy()函數來代替。deepcopy()函數將同時復制它們內部的列表。