iT邦幫忙

2024 iThome 鐵人賽

DAY 20
0
AI/ ML & Data

From Python Beginner To AI Engineer系列 第 21

如何操作多個變數?

  • 分享至 

  • xImage
  •  

列表

當我們要一次操作多個變數時,逐一宣告並使用會使程式碼顯得冗長,例如要計算多個變數的平方:

>>> a0 = 2
>>> a1 = 3
>>> a2 = 5
>>>
>>> a0 *= a0
>>> a1 *= a1
>>> a2 *= a2
>>>
>>> a0, a1, a2
(4, 9, 25)

在 Python 裡面可以將多個元素放在一個列表 (List) 裡面,結合 for 迴圈之類的來逐一操作,宣告的方式如下:

arr = [2, 3, 5]

用中括號 [] 將元素們夾起來,元素之間彼此用逗號 , 隔開,在這個列表裡面,分別有 2, 3, 5 這三個元素。列表可以直接用 print() 一次輸出:

>>> print(arr)
[2, 3, 5]

也可以用 for 迴圈把列表裡面的元素一個一個印出來:

>>> for a in arr:
>>>     print(a)
2
3
5

for 迴圈裡面,a 會逐一代表列表裡面的元素,這個逐一取出並使用的動作,被稱為迭代 (Iteration)。在迭代的過程,可以進行不同的操作:

>>> for a in arr:
>>>     print(a * a)
4
9
25

如果想要修改某個元素的內容,可以用像這樣指定索引值 (Index) 來修改:

>>> arr[0] = 7
>>> print(arr)
[7, 3, 5]

以整數列表而言,在迴圈中修改變數 a 並不會導致 arr 的內容改變:

>>> arr = [2, 3, 5]
>>> for a in arr:
>>>     a = a * a
>>>     print(a)
>>> print(arr)
4
9
25
[2, 3, 5]

雖然 a 依序被變成 4, 9, 25,但是 arr 的內容依然是 [2, 3, 5]。如果想要在迴圈裡面修改列表的值,有兩種方法,第一種是透過 range() 來列舉列表的索引值:

>>> arr = [2, 3, 4]
>>> for i in range(len(arr)):
>>>     arr[i] = arr[i] * arr[i]
>>>     print(arr[i])
>>> print(arr)
4
9
16
[4, 9, 16]

列表的索引值是從 0 開始算的,因此列表內的第一個元素是 arr[0],第二個元素是 arr[1]。而 len(arr) 可以取得 arr 的大小,在這裡 len(arr) 會是 3。因此 range(len(arr)) 會依序回傳 0, 1, 2,剛好可以對應到列表內每個元素的索引值。

第二種是搭配 enumerate() 函式來使用:

>>> arr = [2, 3, 4]
>>> for i, a in enumerate(arr):
>>>     arr[i] = a * a
>>>     print(arr[i])
>>> print(arr)
4
9
16
[4, 9, 16]

enumerate() 函式會回傳該元素的索引值以及元素本身,因此 a 的值一開始會是 arr[i] 的值,但是 aarr[i] 依然是獨立的兩個變數,所以只修改 a 同樣不會影響 arr 的內容:

>>> arr = [2, 3, 4]
>>> for i, a in enumerate(arr):
>>>     a = a * a
>>>     print(arr[i], a)
>>> print(arr)
2 4
3 9
4 16
[2, 3, 4]

執行完這個迴圈後,arr 依然是原本的 [2, 3, 4]

自我練習

寫一個函式 sum_of_list() 傳入一個列表,計算這個列表的總和。

完整的程式碼放在此 Colab 裡面供各位參考。


上一篇
能不能隨機產生一個數字?
下一篇
如何增刪列表的元素?
系列文
From Python Beginner To AI Engineer31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言