---
# System prepended metadata

title: '維元 Python #01'
tags: [Python]

---

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