從零開始學Python (8) — 程式結構與流程語法:如果對手太弱太簡單,那不是很爽嗎?(下)

Day 08 程式結構與流程語法:如果對手太弱太簡單,那不是很爽嗎?(下)

Chih-Yu Lin

--

註:本篇文章同步刊載於iT邦幫忙,為鐵人賽之系列文章。
https://ithelp.ithome.com.tw/articles/10241349

在上一篇文章中我們講了if…elif…else, while, for, 以及range,
我們也提到了像range()這樣子的方法,是用來生成一個可迭代的Python物件。
而只要可迭代的話,我們通常就可以將其轉成一個list,如上一篇文章那樣。
不管是if, while, for等,都可以使用多層的架構,
對於while跟for來說,其處理方式也是類似多層if的概念,
同時外層內層的東西不同也是可以的。
例如:

while xxx:
ooo
rrr
while yyy:
uuu
vvv
www

這個雙重迴圏,執行的順序應該是:
xxx成立時,進入迴圏->ooo->rrr->
yyy成立時,進入迴圏->uuu->vvv->
內層迴圏完成一次,重新檢查yyy,若成立則繼續運行,
否則就會執行完www後,回到xxx檢查。
(所以說內層的執行完,才會輪到外層)

今天我們要介紹一個在Python中很好用且常用的東西,
它也用到了for…in…的方法,名字叫做list comprehension
可以用來快速簡單地生成list,
中文目前沒有統一的叫法,
可以叫成串列生成式/串列表達式/串列解析式都行。
其基本形式像這樣:
[算式 for 單項 in 迭代項目]

舉例來說,假設我們要一個從0~9的串列,我們可以這樣寫:

>>> list(range(9))
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> [i for i in range(9)]
[0, 1, 2, 3, 4, 5, 6, 7, 8]

--

--

Chih-Yu Lin

LeetCode、Python、Java、Android;第11屆iT邦幫忙鐵人賽Software Development組優選(從LeetCode學演算法);HiSKIO特約講師;課程優惠: https://bit.ly/lc2022all ;合作請洽: learnwithdesolve@gmail.com