###### 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
```