第二天(Python打卡)
數值型別:整型,浮點型,布林型別,e記法(結果為浮點型)
型別轉換:int(),float(),str()
獲得關於型別的資訊:type(), isinstance()
type(a)
isinstance(a,str)
算數操作符:+,-,*,/(區別:5/2=2.5),%,**(冪運算),//(地板整除)
優先順序問題:冪運算>正負號>算數操作符>比較操作符(允許3<4<5)>邏輯運算子(not,and,or)
可有效避免懸掛else(因嚴格縮排):
條件表示式(三元操作符):if(...): if(...): print("...") else: print("...")
x,y=4,5
if x<y:
small = x
else:
small = y
等價於 small = x if x<y else y
斷言:當條件為假時,程式自動崩潰並丟擲AssertionError的異常,用於確保程式中的某個條件一定為真才能讓程式正常工作。e.g. asset 3>4
for迴圈:
for 目標 in 表示式:
迴圈體
range() : range([start,]stop[,step=1]),生成數字序列。for i in range(5): print(i) for i in range(1,7): print(i)
兩個關鍵的語句:break,continue
序列:列表,元組和字串的共同點:都可以通過索引得到每一個元素;預設索引值都是從零開始;可以通過分片的方法得到一個範圍的元素的集合;有很多共同的操作符(重複操作符,拼接操作符,成員關係操作符)
列表:
列表推導式:a=[x for x in range(100) if not (x%2) and x%3]
向列表中新增元素:append(): 插入一個元素。
extend():利用一個列表插入多個元素。
insert(索引,元素)
分片(切片):
list[:3]
list[3:]
list = [1,2,3,4]
區別list1與list2:list1 = list[:]
list2 = list
元組:戴上了枷鎖的列表
字典:
推導式:{i : i%2 == 0 for i in range(10)}
集合:推導式:{i for i in range(10)}
生成器推導式:(i for i in range(10) if i%2)
列舉 enumerate(可迭代物件):
>>> list(enumerate(list2))
#[(0, 3), (1, 54), (2, 6), (3, 3), (4, 4)]
zip():
>>>a = [1,2,3,4,5,6,7,8]
>>>b = [1,2,3,4,5]
>>>list(zip(a,b))
#[(1,1),(2,2),(3,3),(4,4),(5,5)]
函式引數:預設引數一定要用不可變物件,如果是可變物件,程式執行時會有邏輯錯誤!
要注意定義可變引數和關鍵字引數的語法:
*args
是可變引數,args接收的是一個tuple;
def sum1(*num):
result = 0
for i in num:
result += i
return result
n = [1,2,3,4]
s = sum1(*n)
print(s)
**kw
是關鍵字引數,kw接收的是一個dict。
def sum2(**num):
for key,value in num.items():
print(key+"-->"+value)
n1 = {'1':'one','2':'two','3':'three'}
sum2(**n1)
以及呼叫函式時如何傳入可變引數和關鍵字引數的語法:
可變引數既可以直接傳入:func(1, 2, 3)
,又可以先組裝list或tuple,再通過*args
傳入:func(*(1, 2, 3))
;
關鍵字引數既可以直接傳入:func(a=1, b=2)
,又可以先組裝dict,再通過**kw
傳入:func(**{'a': 1, 'b': 2})
區域性變數與全域性變數:如一定要用區域性變數修改全域性變數用global。
匿名函式lambda:
lambda 引數 :返回值表示式
過濾器 filter(過濾條件 ,過濾物件):過濾False,剩下 True。對映map(對映關係,對映物件)
>>>list(filter(lambda x : x%2,range(10)))
#[1,3,5,7,9]
>>>list(map(lambda x : x*2,range(10)))
#[0,2,4,6,8,10,12,14,16,18]