###### tags: `Python` # CH3 陣列 ## For迴圈 :::success **python for 迴圈** 1.用陣列驅動的 2.range(起始,最終,累加) --> 產生的是一個陣列 3.可用range() & 切片技巧達成類似C++的效果 ::: ### 語法 ```python= for i in list: SATAMENT ``` #### 示意圖 ![](https://i.imgur.com/sMxmzIx.png) ### Range * Range(起始,中止(<),遞增) * 輸出是一個list ```python= print(range(0,10,1) ``` > [0,1,2,3,4,5,6,7,8,9] ## 註記 ### 常用fuction ![](https://i.imgur.com/ujAdo4W.png) ### 元組tuple * 不可修改的list #### 常用方法~交換 ```python= t=x,y y,x=t ``` ## 一維陣列 ![](https://i.imgur.com/vdG71yw.png) ### 建立方法 1. `a=list()` 2. `a=[]` ### 動態更動方法 **動態更動: 像是抽屜層數原來五層,我要突然再多增加一層抽屜 or 減少一層抽屜** 1. `list.append(x)`: 把變數x塞到list的最後面 2. `list.insert(i, x)`: 把變數x塞到i這個位置上 3. `list.pop()`: 把list的最後一格丟掉 4. `list.pop(i`: 把list的第i格丟掉 5. `list.remove(x)`: 會把第一個出現的變數x拿掉 6. `list.clear()`: 把list內的資料全部清光光 ### 切片 ![](https://i.imgur.com/tI15m6r.png) #### 舉例 ```python= data = [8, 4, 20, 99] print(data[0:3:1]) ``` > [8,4,20] ### 輸入值到陣列之中 #### 做法1 ```python= str = input().split() num = [] for e in str: num.append(int(e)) ``` > **後記:** `append()`適用在動態規劃上 #### 做法2 ```python= str = input().split() num = [] for e in str: num = num + [int(e)] ``` #### 做法3 ```python= a=[i fori in input().split()] ``` > **後記:** 這是用在有一定東西隔開的情況下 ### 函式集 #### Split() 1. split 會產生陣列 2. 預設分割 " " #### len() 1. 得到list長度 #### index() 1. 找到第一個所求值,並回傳其位置 2. lsit無該數會出bug ## 二維陣列 ![](https://i.imgur.com/RBn0KDl.png) > A[0][0]=0 > A[2][4]=42 :::success **二維陣列** 1. 把她想成一個矩陣 ::: ## 輸入值到陣列之中 ```python= A=[] for i in range(row): A.append([j for j in input().split]) ``` ## 如何先宣告List ### 錯誤作法 ```python= A=[[0]*col]*row ``` **說明:** 這個錯法會把[0]*col的指標移到其他row上 **說明:** 因此Python要定義多維陣列最好用索引值 ### 正確作法 ```python= A.append([0]*row for i in range(col)) ``` #### 備註 1. python物件是以指標方式實現,因此=代表著兩變數指標相同 ##### Example ![](https://i.imgur.com/FJccZlI.png) > 由上可知 a[0]=b[0]=9 而不是b[0]=9 a[0]=1