2025 HKDSE ICT Programming Syllabus 中三課程清Concept Python Programming List 串列配合FOR Loop 使用 List Comprehension 串列綜合運算/列表推導 ... ... <看更多>
「python list comprehension用法」的推薦目錄:
- 關於python list comprehension用法 在 Re: [問題] list的iterator應用問題- 看板Python - 批踢踢實業坊 的評價
- 關於python list comprehension用法 在 【Python】List 串列配合FOR Loop 使用List ... - YouTube 的評價
- 關於python list comprehension用法 在 python list comprehension用法2022-在Mobile01/PTT/Yahoo上的 ... 的評價
- 關於python list comprehension用法 在 python list comprehension用法2022-在Mobile01/PTT/Yahoo上的 ... 的評價
- 關於python list comprehension用法 在 ccClub Python讀書會, profile picture - Facebook 的評價
python list comprehension用法 在 python list comprehension用法2022-在Mobile01/PTT/Yahoo上的 ... 的美食出口停車場
python list comprehension用法 2022-在Mobile01/PTT/Yahoo上的房地產討論內容懶人包,找list comprehension教學,list comprehension中文,python list comprehension ... ... <看更多>
python list comprehension用法 在 python list comprehension用法2022-在Mobile01/PTT/Yahoo上的 ... 的美食出口停車場
python list comprehension用法 2022-在Mobile01/PTT/Yahoo上的房地產討論內容懶人包,找list comprehension教學,list comprehension中文,python list comprehension ... ... <看更多>
python list comprehension用法 在 ccClub Python讀書會, profile picture - Facebook 的美食出口停車場
Python 初學觀念陷阱卡29-list comprehension 】 透過之前一系列對於Python 資料型態與迴圈的介紹相信大家愈來愈熟悉 ... 接著來看看list comprehension 的常見用法: ... <看更多>
python list comprehension用法 在 Re: [問題] list的iterator應用問題- 看板Python - 批踢踢實業坊 的美食出口停車場
原po的程式碼可以說是generator版本的list comprehension,
什麼是list comprehension?
其實把原敘述的左右小括號改成中括號就是了,如下:
>>> test = [(x,y) for x in range(3) for y in range(x)]
會產生出類似的結果:
>>> test
[(1, 0), (2, 0), (2, 1)]
test會是一個list。這樣子的敘述其實等價於:
>>> test = []
>>> for x in range(3):
for y in range(x):
test.append((x,y))
(從上述程式碼原po大概就可以理解為什麼會有那樣的output了吧!)
list comprehension提供了一個更快速的方式建立起一個有規律的list,
x和y也會被清理掉而不會像下面那種方式依然存在。
但原po的程式碼則叫做generator expression:
>>> test = ((x,y) for x in range(3) for y in range(x))
得到的test會是一個generator,是一種iterator,
可以透過next()取得下一個值直到沒有東西,
>>> next(test)
(1, 0)
>>> next(test)
(2, 0)
>>> next(test)
(2, 1)
>>> next(test)
Traceback (most recent call last):
File "<pyshell#42>", line 1, in <module>
next(test)
StopIteration
也可以像原po一樣透過for迴圈取值出來,
所以會得到類似list comprehension的結果。
那樣的敘述等價於:
>>> def test():
for x in range(3):
for y in range(x):
yield(x,y)
>>> test = test()
generator expression省去了建立generator function,實作iterator class的麻煩。
※ 引述《Neverfor (yorker)》之銘言:
: test=( (x, y) for x in range ( 3 ) for y in range (x) )
: for x,y in test:
: print(x,y)
: output:
: 1 0
: 2 0
: 2 1
: 不好意思 看了很久想不出來程式碼第一行跟結果的關係QQ
: 這種用法是什麼意思呢?
: 想問
: 1. (x,y)是否代表 輸出的iterator 1個elemeny 是 (x,y)
: 2.迴圈看不太懂意思
: 前面的for x 是否是後面y range的x
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.168.202.245
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1467425395.A.84B.html
※ 編輯: max80713 (118.168.202.245), 07/02/2016 10:14:59
※ 編輯: max80713 (118.168.202.245), 07/02/2016 10:21:00
... <看更多>