iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0
Software Development

Python 微進階系列 第 27

Python 微進階 Day27 - comprehension(生成式)

  • 分享至 

  • xImage
  •  

comprehension(生成式)

list comprehension

  • 語法:[ 運算式 for 變數(item) in 可迭代的物件(iterable) if 條件]
    • if 條件非必須
    • 可迭代的物件為原本的 list
    • 運算式也可加入 if 判斷
x = [1, 2, 3, 4]
x_list = [item * 2 for item in x]
print(x_list)
# [2, 4, 6, 8]

x_list = [item * 2 for item in x if item % 2 == 0]
print(x_list)
# [4, 8]

x_list = [item if item > 2 else 0 for item in x ]
print(x_list)
# [0, 0, 3, 4]

dict comprehension

  • 語法:{ key 運算式:value 運算式 for 變數(item) in 可迭代的物件(iterable) if 條件}
    • if 條件非必須
    • 可迭代的物件為原本的 list
    • 運算式也可加入 if 判斷
x_dict = {item:item * 2 for item in x}
print(x_dict)
# {1: 2, 2: 4, 3: 6, 4: 8}

x_dict = {item:item * 2 for item in x if item > 2}
print(x_dict)
# {3: 6, 4: 8}

x_dict = {f"{item}":item if item > 2 else 0 for item in x }
print(x_dict)
# {'1': 0, '2': 0, '3': 3, '4': 4}

generator(產生器)

  • 當把 list 生成式的 [] 變更為 (),並不是 truple,而是一個 generator(產生器)
  • 可用迴圈逐一印出
x = [1, 2, 3, 4]
x_list = [item * 2 for item in x]
print(x_list)
# [2, 4, 6, 8]

x_gen = (item * 2 for item in x)
print(x_gen)
# generator object

參考資料

次回

來看看 type hint 吧!


上一篇
Python 微進階 Day26 - lambda(匿名函式)
下一篇
Python 微進階 Day28 - type hint(型別提示)
系列文
Python 微進階31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言