###### tags: `維元python` 維元 Python #01 === ## Task 1 #### 交換 交換的時候其他語言都會使用temp來做交換使用,或是使用a+b先加起來然後再互扣,但python支援下面的這些方式處理。 上下兩者都可 ``` (a,b)=(b,a) a,b = b,a0 ``` #### DICTIONARY 沒有定義的Dictionary做輸出就會出現error ``` d = {'Mark'; 2} print(d['Mark'])#2 print(d['Mary'])#mary可能會報錯 ``` 但若是用if else又太簡單,所以python有提供一些方便的套件。 我們推薦get 跟 setdefault用法 - get get 直接可以確認mary是否在dictionary裡面,但不會把值納入其中。 ``` d = {'Mark'; 2} print(d.get('Mary',-1),d) ``` - setdefault setdefault若是查到沒有在裡面就會把值納入,而get不會加入。 ``` d = {'Mark'; 2} print(d.setdefault('Mary',-1),d) ``` #### 去除重複元素 使用set可以處理 ``` L =[1, 1, 2, 3] d = list(set(L)) ``` #### 迴圈 - range 輸出最左到最右邊-1的值 ``` for i in range (1,3): print(i) ``` out -> 1, 2, 3 - zip 壓縮左右兩邊的值 ``` for i,j in range ([a, b, c],[1, 2, 3]): print(i, j) ``` output-> a1, b2, c3 - enumerate 輸出element跟index的值 ``` for i,j in enumerate([a, b, c]): print(i,j) ``` output-> 0a,1b,2c #### comprehension 可以把輸出值縮短,簡化公式 ``` L=['a','b','c'] for i in L: print (i) ``` 可以寫成 ``` L=['a','b','c'] print([i for i in L]) ``` 若有判斷式 ``` L=['a','b','c'] for i in L: if i>5: print (i) ``` 可以寫成 ``` L=['a','b','c'] print([i for i in L if i>5]) ``` 若是值改變 ``` L=[1, 2, 3] for i in L: B.append(i*2) ``` 可以寫成 ``` L=[1, 2, 3] B=[i*2 for i inL] ``` 若寫成下列就只會存取一次,每個值只會有一次不會被記憶 ``` L=[1, 2, 3] B=(i*2 for i in L) ``` #### 變數不固定 python 無法讓不同函數共享變數名稱,所以有開發出一些變數不固定的寫法。 ``` def sum(*a) t=0 for i in a: t=t+1 return t sum(1,2)##3 sum(1,2,3)##6 ```