看板Marginalman
: 列表生成式
: ls = [x * x for x in range(1000000)]
: 生成器(Generator)
: ls = (x * x for x in range(1000000))
: 前者會生成一個列表 並占用1000000空間的內存
: 後者則返回生成器 生成器在迭代時才會生成元素
: 所以能節省空間
我剛上網找生成器的東西
然後又學到新的東西了
def my_generator():
for i in range(5):
yield i * i
for num in my_generator():
print(num)
用function和yield寫生成器 跟return對立
在無限數列上 生成器就很好用
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
fib = fibonacci()
for i in range(10):
print(fib.__next__()) # 或使用 next(fib)
python也很有料欸 怎麼我以前都沒學過這些
--
https://i.imgur.com/tDUrHwI.gif
--
※ 批踢踢實業坊(ptt.cc), 來自: 118.169.8.175 (臺灣)※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1726747382.A.FA0.html
→ sustainer123: 生成器在處理大數據很好用 可以逐行讀取省空間 09/19 20:05
→ cities516: 跟直接call一個list出來對比 省太多了 09/19 20:05
→ sustainer123: list就一次全部東西都丟給你 09/19 20:05
→ sustainer123: 生成器就你呼叫他才生東西 09/19 20:06
→ cities516: 肥肥還停留在pandas蝦機八select的等級:( 09/19 20:10