
單行 for 迴圈 教學
最近收到一些同學私信問我,TQC+ 902 題目的解答程式碼是什麼意思?
List = [int(i) for i in data.split(‘ ‘)]
這是 for 迴圈的應用技巧之一
「單行 for 迴圈」
通常用來建置 List 清單的值
這次趁這個機會,我來簡單介紹一下「單行 for 迴圈」的用法。
一、單行 for 迴圈 語法
語法如下:
清單變數 = [迴圈變數 for 迴圈變數 in 資料來源 if 條件判斷式]
P.S. if 條件判斷式 可省略
以 TQC+ 902 題目為例:
read.txt 的內容為「11 22 33 22 33 44 33 44 55 44 55 66 55 66 77」
讀取後給變數 data,此時 data 的型態為字串 str
f = open("read.txt", 'r')
data = f.read()
f.close()
print(type(data))

接著要透過單行 for 迴圈,將這個字串裡的數字給清單變數 List。
套用語法:清單變數 = [迴圈變數 for 迴圈變數 in 資料來源]
變數 data 就是我們的資料來源,但首先我們要先把 data 用 split 函式做拆解,將它變成清單型態,如下:(為求方便,我直接將 data 設為字串。)
data = "11 22 33 22 33 44 33 44 55 44 55 66 55 66 77"
print("data.split() 的資料型態為:", type(data.split(' ')))
print(data.split(' '))

所以將 data.split(‘ ‘) 當作資料來源,清單變數取名為 List、迴圈變數取名為 i,如下:
List = [int(i) for i in data.split(‘ ‘)]
那麼因為最後要做數字加總,所以我們在第一個迴圈變數加上 int,讓它變成整數 int 型態,最後才可以用 sum 函式做加總。
data = "11 22 33 22 33 44 33 44 55 44 55 66 55 66 77"
List = [int(i) for i in data.split(' ')]
print(sum(List))

如果以上講解還是不太清楚的話,我下面做一些簡單的範例。
二、簡單範例
範例一:將數字 0 ~ 9 新增到變數 List
普通寫法:
List = []
for i in range(10):
List.append(i)
print(List)
使用 單行 for 迴圈 寫法:
List = [i for i in range(10)]
print(List)

接著我們來搭配 if 條件判斷式
範例二:將數字 0 ~ 9 之間的偶數新增到變數 List
普通寫法:
List = []
for i in range(10):
if i % 2 == 0:
List.append(i)
print(List)
使用 單行 for 迴圈 寫法:
List = [i for i in range(10) if i % 2 == 0]
print(List)

妳看!使用 單行 for 迴圈 來撰寫是不是方便多了呢!?
那麼這次的教學就到這邊,若有看不懂的地方歡迎下方留言詢問~
如果覺得文章內容還不錯的話,麻煩請幫我點個讚!感謝
可以多點幾次喔~~
第一次點讚需使用 Google 或 Facebook 帳號註冊

