1. dict字典
a. 定義
如果把清單看做是有序的對象集合,那麼就可以把字典當成是無序的集合。它們主要的差别在于:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。
b. 建立
1、直接建立
方法一:
temp = {}
temp['name'] = 'xiaoming'
方法二:
temp = dict()
temp['name'] = 'xiaoming'
2、dict() 函數建立
方法一:
temp = dict(name='xiaoming', age=18)
方法二:
temp = dict((('name', 'xiaoming'), ('age', 18)))
方法三:dict() zip() 函數聯合使用
temp = dict(zip(['name', 'age'], ['xiaoming', 18]))
c. 字典的方法
1.clear
會清空該字典。
d={1:2}
d.clear
d
2.copy
該方法會指派給一個新的字典,内容和原子典一緻,源字典改變,拷貝的字典不變。
d={1:2}
c2=d.copy()
c2
d
d[2]=3
d
c2
3.fromkeys
這個方法可以建立一個所有值一樣的字典,然而并不曉得有什麼用,大概還沒遇到,源字典不變
d
d.fromkeys([‘w’,‘ws’],[‘2’,‘3’])
d.fromkeys([‘w’,‘ws’],‘2’)
d.fromkeys([‘w’,‘ws’],(2,3))
4.get
這個方法好,和d[key]的差別在于,若key不存在get方法不會報錯,不影響程式運作,尤其是在爬蟲的時候,可以避免程式出錯。
d
d.get(1)
d.get(3)
5.items
這個方法會将所有的鍵值對以元組的形式傳回。
d.items()
dict_items([(1,2),(2,3)])
d
for k,v in d.items():
print(k)
print(v)
6.keys和value
傳回keys 和value
d.keys()`在這裡插入代碼片`
d.values()
7.pop
這個方法和get有點像,但是有差別,他會傳回對應的值後,删除該鍵值對。
d.pop(1)
d
8.popitem
删除字典給定鍵 key 所對應的值,傳回值為被删除的值,如果要删除的 key 不存在,則需要添加預設值,否則會報錯。
删除指定key
>>> t = {'name': 'summer', 'age': 23}
>>> t.pop('name')
'summer'
>>> t
{'age': 23}
key不存在,傳回預設值
>>> t = {'name': 'summer', 'age': 23}
>>> t.pop('new_nmae', 'judy')
'judy'
>>> t
{'name': 'summer', 'age': 23}
key不存在,沒有預設值
>>> t = {'name': 'summer', 'age': 23}
>>> t.pop('new_nmae')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'new_nmae'
9.setdefault
功能上與get一緻,但是他會向字典裡面添加鍵,值預設為None。
10.update
類似于合并字典,但是如果有相同的鍵合并的字典會被新字典的值覆寫。
2. 集合(set)
a… 特性
不同元素(無重複)
無序
元素必須是不可變類型的對象,集合本身是可變類型
b 建立
定義一個空的集合 my_set = set()
注意: my_set = {} 這樣的寫法為一個空字典
c. 方法
(1)添加元素(add,update)
add 作為一個整體添加到集合中
my_set = set()
my_set.add("abc")
print(my_set)
update 是把要傳入的元素拆分,做為個體傳入到集合中
my_set = set()
my_set.update("abc")
print(my_set)
(2)删除元素(remove,pop,discard)
remove 如果有,直接删除;如果沒有,程式報錯 格式:集合名.remove(元素)
my_set = {11, 13, 15}
my_set.remove(13)
print(my_set)
my_set.remove(131)
print(my_set)
pop 随機删除集合中的元素 如果集合中沒有元素則程式報錯
my_set = {11, 13, 15}
my_set.pop()
print(my_set)
discard 如果元素存在,直接删除; 如果元素不存在 不做任何操作
格式: 集合名.discard(元素)
my_set = {11, 13, 15}
my_set.discard(13)
print(my_set)
my_set.discard(131)
print(my_set)
(3)交集( & )
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
new_set = set1 & set2
print(new_set)
#結果 {3, 4}
(4)并集( | )
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
new_set = set1 | set2
print(new_set)
#結果 {1, 2, 3, 4, 5, 6}
(5)差集( - )
項在前一個集合中,但不在一個集合中
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
new_set = set1 - set2
print(new_set)
#結果 {1, 2}
(6)對稱差集( ^ )
項在前一個集合或後一個集合中,但不會同時出現在二者中
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
new_set = set1 ^ set2
print(new_set)
#結果 {1, 2, 5, 6}
(7)去重( 将元組或者清單轉化為集合 )
my_list = [1, 2, 3, 4, 2, 3, 1, 2, 2]
#轉化為集合
my_set = set(my_list)
print(list(my_set))
# 結果 [1, 2, 3, 4]
3. 判斷語句(要求掌握多條件判斷)
if…:[+elif…:+else…:]
基本判斷符号:等于==, 不等于!=, 大于>, 小于<, 大于等于>=, 小于等于<=, 取反not(注意不是!)
多個判斷語句結合:與and,或or
一個if語句 + 一個else 語句:
當if 判斷為True時,執行if語句下的代碼; 而當if判斷為False時,執行else語句下面的代碼。
n個if語句(n>=2) + 最後一個else語句:
每一個if語句都會被判斷,不管它之前的if判斷的是True或者False。 判斷為True的if語句,其對應的代碼會被執行,而為False時則不執行,直接跳到下一個if判斷。
而else語句隻有當第n個if(即else前一個if)為False時才執行。若第n個if為True, 則不執行else語句對應的内容。
一個if語句 + n 個 elif語句 (n >=1) + 一個else語句:
按照先後順序進行判斷,若目前條件(if 或者是 elif) 為False, 則跳到下一個條件進行判斷,否則為True時,執行對應的代碼,并且後面還未執行的條件判斷都跳過,不再執行了。
即隻要遇到一個if或elif為True的, 程式執行完對應的代碼後,該輪條件判斷就結束了。
4. 三目表達式
格式:為真時的結果 if 判定條件 else 為假時的結果
例1 是先輸出結果,再判定條件
輸出1,如果5大于3,否則輸出0
print(1 if 5>3 else 0)
例二 一般用于判斷指派中,例如:
x,y = 50,25
small = x if x<y else y
print(small)
例三 還可以嵌套使用,還可以多層嵌套
a,b,c=10,20,6
min_num = a if a<b and a<c else (b if b<a and b<c else c)
print(min_num)
5. 循環語句
python中循環語句隻有兩種 A.while…: B.for…in…:
A.while語句:當判斷語句為真時一直執行縮進的代碼塊,必須指定跳出條件。
while 判斷條件:
執行語句……
B.for語句:這個語句比較靈活,因為可以使用in來指定某一個序列而不用決定跳出條件(當處理完序列後就會跳出循環)
-
for 變量 in range(10):
循環需要執行的代碼
-
for 變量 in range(10):
循環需要執行的代碼
else:
循環執行結束執行的代碼
C.搭配的關鍵詞:break和continue。用法同java中的用法。
D.python還允許在循環中搭配else,表示不是由break跳出循環時才能調用(相當于do…while的用法)
https://blog.csdn.net/weixin_41179709/article/details/81586367
https://blog.csdn.net/murenqishi/article/details/39894547
https://blog.csdn.net/youzi_yun/article/details/78943450
https://blog.csdn.net/weixin_42589922/article/details/80902620
https://blog.csdn.net/qq_26261381/article/details/83094534
https://blog.csdn.net/weixin_43946756/article/details/86564991
https://blog.csdn.net/qq_42497250/article/details/81123729
https://blog.csdn.net/weixin_42589922/article/details/80902620
https://blog.csdn.net/mg_aping/article/details/82831599
https://blog.csdn.net/Yort2016/article/details/71159951