# Python常見資料類型與方法
[TOC]
### 1. 字串string
```pythoin=
tel = '06-2371206'
ext = '#600'
```
|運算子|描述|範例|結果|
| -------- | -------- | -------- |-------- |
|+ |字串連接|tel + ext|'06-2371206#600'|
|* |字串重覆輸出|ext * 2| '#600#600'|
|[index]|字串中索引值所在字元| tel[5] |'7' |
[起點 : 終點 : step] |截取部分字串|tel[1:4]、tel[6: ]、tel[ :6]、tel[::-1]|'6-2'、'1206'、'06-237'、'6021732-60'|
|in|成員運算子 註:時間可能較慢|'9' in tel|False|
```pythoin=
name1 = 'DAVID'
name2 = 'david'
```
字串函式|描述|範例|結果
| -------- | -------- | -------- |-------- |
len(<str>)|計算字串長度|len(name1)|5
<str>.lower( )|字串轉小寫|name1.lower()|'david'
<str>.upper( )|字串轉大寫|name2.upper()|'DAVID'
<str>.islower( )|字串中英文全小寫|name1.isupper()|False
<str>.isupper( )|字串中英文全大寫|name1.isupper()|True
```python=
name = 'DAVID 321'
```
| 字串函式|描述|範例|結果|
| -------- | -------- | -------- |-------- |
|<str>.find(<str1>)|在<str>尋找<str1>,回傳索引值;若未找到,回傳-1|name.find(‘FSH’)|2|
|<str>.replace(<str1>,<str2>)|將<str>中的<str1>以<str2>取代|name.replace(‘FSH’,‘GS’)|'TNGS 109'|
|<str>.split([sep])|字串以sep分割,sep預設值為空白,分割完為表列list|name.split()|['TNFSH','109']|
### 2. 表列 list
```python=
list1 = [ 'March', 'May', 'November' ]
list2 = [ '3', '5', '11']
```
|運算子|描述|範例|結果|
| -------- | -------- | -------- |-------- |
|+ |列表連接|list1 + list2|['March', 'May', 'November', '3', '5', '11']|
|* |列表重覆輸出|list2 * 2| ['3', '5', '11', '3', '5', '11']|
|[index]|串列中索引值所在字元| list1[2] |'November' |
[起點 : 終點 : step] |截取部分串列|list1[:2]|[ 'March', 'May']|
|in|成員運算子 註:時間可能較慢|'3' in list2|True|
| 函式|描述|範例|結果|
| -------- | -------- | -------- |-------- |
|len(<list>)|計算表列元素個數|len(data)|4|
|list(<str>)|將<str>轉成表列|list('ziyu')|['Z','I','Y','U']|
|<list>.clear( )|清除表列中所有元素|data.clear()|[]|
```python=
data = [ 'David', [95, 118], 'ZiYu', 100 ]
data1 = [89, 119]
```
| 方法|描述|範例|結果|
| -------- | -------- | -------- |-------- |
|<list>.append(<obj>)|將<obj>加到<list>尾端|data.append(35)|[ 'david', [95, 118], 'ZiYu', 100, 35 ]|
|<list>.extend(<list1>)|將<list1>合併至<list>尾端|data.extend(data1)|[ 'David', [95, 118],'ZiYu',100,89,119 ]|
|<list>.remove(<obj>)|移除<list>中<obj>元素|data.remove('ZiYu')|[ 'David', [95, 118], 100 ]|
|<list>.insert(<j>,<obj>)|將<obj>加到<list>的索引值<i>位置|data.insert(1, 35)|[ 'David', 35, [95,118], 'ZiYu', 100 ]|
|<list>.pop( [index])|從<list>取出指定元素,若[index]未指定,則取出尾端元素|print(data.pop(1))|[95,118]|
|<list>.reverse( )|反轉表列元素|data.reverse() print(data)|[100, 'ZiYu', [95, 118] 'David']|
```python=
data_s = [ 'David', 'ZiYu', 'Arch' ]
data_n = [89, 119, 55]
```
| 函式|描述|範例|結果|
| -------- | -------- | -------- |-------- |
| '[sep]'.join( <list>)|用[sep]來連結表列元素,若未指定[sep],則無間隔,註:僅限表列元素皆為字串|'_'.join(data_s) ''.join(data_s) ' '.join(data_s)|David_ZiYu_Arch DavidZiYuArch David ZiYu Arch|
|sum(<list>)|將表列中所有元素加總,註:僅限表列元素皆為數字|sum(data_n)|263|
|<list>.sort( )|將表列中所有元素排序|data_s.sort()|['Arch', 'David', 'ZiYu']|

### 3. 元組 tuple
* 資料格式:以( )將不同型態的資料含括起來,以 , 分隔(元組中的資料是有序排列,從0開始編號)
* 格式:元組名稱 = (元素1, 元素2, … )
* 與表列list類似,但元組tuple內的元素不能修改
```python=
data = ( 'David', [95, 118], 'ZiYu', 100 )
print(data[1])
#輸出[95, 118]
```
* 特列:tup1 = (53, ) ,只有一個元素時,其後要加逗號
### 4. 字典 dict
* 資料格式:以{ }將各組鍵:值對應資料含括起來,以 , 分隔(字典中的資料是無序的)
* 註:若字典中有相同的key,則會取出最後的value
```python=
data = {
'David': 95,
'ZiYu': 100
}
```
| 字典操作|語法範例|data內容|
| -------- | -------- | -------- |
|新增|data['Cat'] = 88|{ 'David':95, 'ZiYu':100, 'Cat':88 }|
|修改|data['David'] = 88|{ 'David':88, 'ZiYu':100 }|
|刪除(鍵值對)|del data['David']|{ 'ZiYu':100 }|
|刪除(字典)| del data |#刪除整個字典|
```python=
data = { 'David': 95, 'ZiYu': 100, 'David': 105 }
```
| 字典方法|語法範例|執行結果|
| -------- | -------- | -------- |
|<dict>.clear()|data.clear()|{ }|
|<dict>.copy()|data1=data.copy() print(data1)|{ 'David':105,'ZiYu':100 }|
|<dict>.get(key,default=None)|print(data.get('Cat')) print(data['Cat'])|None|
|<dict>.items()|print(data.items())|dict_items([ ('David': 95), ('ZiYu': 100), ('David': 105) ])
|<dict>.keys()|print(data.keys())|dict_keys(['David','ZiYu', 'David' ])
|<dict>.values()|print(data.values())|data_values[ 95, 100, 105 ]|
### 5. 集合 set
* 資料格式:以{ }將各組資料含括起來,以 , 分隔(集合中的資料是無序的,會自動刪除重複元素)
```python=
S1 = { 'David', 95, 'ZIYU', 100 }
```
| 集合操作|語法範例|data內容|
| -------- | -------- | -------- |
|新增|S1.add(119) print(S1)|{ 'David', 95, 'ZIYU', 100 ,119}|
|移除|S1.remove(100) print(S1)|{ 'David', 95, 'ZIYU'}|