python學習筆記:元組tuple與字典dict
即使模電考試如此緊張,我還是依舊勤勞的更新,真是...
1、列表的推導式巢狀
[語句 for 變數1 in 可迭代物件1 for 變數二 in 可迭代物件2]
比如,對列表L1和L2數字分別求和
L3 = [x + y for x in L1 for y in L2]
寫在前面的迴圈先執行
2、練習:用列表推導式巢狀生成['A1','A2','A3','B1','B2','B3','C1','C2','C3']
L3 = [str(chr(x)) + (str(chr(y))) for x in range(ord('A'),ord('C') + 1) for y in range (ord('1'),ord('4'))]
print(L3)
#我簡直就是個天才
3、元組tuple
元組是不可改變的序列,可list一樣,可以儲存任意型別的元素
一旦生成無法進行改變和修改
表示方法:
用()括起來,單個元素括起來之後要加逗號,區別元組和單個元素,多個元素用逗號隔開
4、建立元組
t = 200,
t = (200,)
t = 100,200,300
t = (1,2,3)
5、元組tuple的建構函式
t = tuple()
t = tuple(iterable)
和list的沒有區別
6、元組的算術運算
+ += * *=
和list的算術運算結果是完全一樣的
算術運算得到的元組都是新的物件,元組算術運算也是
7、元組的比較運算
> >= < <= ==
規則和列表、字串相同
8、元組的切片
和list一樣,但是元組的切片不能賦值
9、引用計數:一個物件,有一個值記錄其被應用的次數,到0時,物件會被回收
10、del刪除一個元組
但是del不能刪除元組內的元素,因為元組一旦生成是不可變的
11、函式sorted
sorted(iterable,reverse = Flase)
返回排序後的可迭代物件,不破壞原物件順序
函式reversed
reversed(iterable)
返回反轉後可迭代物件的地址,一般如下使用
for x in reversed(L1):
print(x)
12、字典dict
可以儲存任意型別資料,資料的檢索效率很高
字典中每個元素都用“鍵”(key)進行索引,而不像其他可迭代物件用下標進行索引
字典中資料沒有先後關係,字典的儲存是無序的
字典中資料和鍵值一一對應
字典的鍵值不能重複,且只能用不可變型別(可變型別包括list,dict,set,bytearray)做字典的鍵
13、字典的字面值表示方法
以{}表示一個字典,其中用:分隔每個鍵和值,用:分割鍵和值
14、建立字典
d = {}
d = {"name":"Williamcode","age":"19"}
字典的鍵值必須是不可變型別
d = {(2018,08,08):"奧運會開幕式"}
d = {1:'one,2:'two'}
d = {123:[1,2,3],"234":[2,3,4]}
d = {True:"True 表示真",False:'False代表假'}
15、字典的建構函式
d = dict()
d = dict(iterable) 傳入的可迭代物件必須可以成對的拿出值,換句話說,可迭代物件中的每一個元素,都必須包含兩個子元素
d = dict(**kwargs) 用命名關鍵字傳參形式生成一個字典
示例:
d = dict([(1,2),(3,4),"ab"])
d = dict(name = "WilliamCode",age = 19)
關鍵字表達式的左值必須是符合變數名命名規則的字串,比如1 = 'WilliamCode'就不行
且當左值為一個已經存在的變數名時,直譯器依然只把左值當作字串處理
16、字典的鍵索引
字典[鍵] 來獲取鍵對應的值
d = dict(name = "WilliamCode",age = 19,gender = 'male')
print("Age and gender of %s is %d & %s" % (d['name'],d['age'],d['gender']))
17、修改鍵的值
d = dict()
d['name'] = "WilliamCode' #建立新的鍵值對
d['age'] = 19 #建立新的鍵值對
d['age'] = 18 #利用索引修改鍵的值
18、初始化時向字典插入多個鍵值對時有重複鍵值對出現時的衝突處理問題:保留最後出現的那個值
19、del刪除語句
用於刪除字典中的鍵,同時刪除與值的引用關係
del d[鍵值]
比如
d = dict(name = "WilliamCode",age = 19,gender = 'male')
del d['name']
那麼d = {'age': 19, 'gender': 'male'}
20、字典的成員資格判斷符
in 和 not in
判斷某鍵值是否在字典內
21、可以用於字典的內建函式
len()
max() #返回字典鍵的最大值,同時有字串和int做鍵時會出錯,因為無法比較;只對鍵進行操作
min() #返回字典鍵的最小值,同時有字串和int做鍵時會出錯,因為無法比較;只對鍵進行操作
sum() #返回字典鍵的加和,同時有字串和int做鍵時會出錯,因為無法加和;只對鍵進行操作
any() #對鍵值進行真值測試...;只對鍵進行操作
all() #對鍵值進行真值測試...;只對鍵進行操作
22、字典的常用方法
d.clear() 清空一個字典
d.pop(key) 移除鍵,同時返回該鍵對應值的引用
d.copy() 返回字典d的副本,只複製一層做(淺拷貝)
d.update(D1) 合併d和D1,如果用相同的鍵,則以D1的值最為鍵的值
d.get(key[,default = None]) 得到一個鍵的鍵值,如果不存在,返回default的值(預設為None)
d.keys() 返回d中所有鍵組成的可迭代物件dict_keys,可以用於遍歷一個字典
d.values() 返回d中所有值組成的可迭代物件dict_values
d.items() 返回d中所有鍵值對所組成的元組所組成的可迭代物件dict_items
23、練習題:輸入一個字串,列印字串中每個字元出現的次數
str1 = input("please input a string")
d1 = dict()
for c in str1:
if c in d1:
d1[c] += 1
else:
d1[c] = 1
for i in d1.items():
print("%s appeared %d times" % (i[0],i[1]))