python列表生成式和if語句、if...else語句、zip函數結合使用

python列表生成式,就是通過一行代碼語句生成一個列表,非常的方便快捷

1 python列表生成式

python列表生成式的語句機構如下:

[expression for x in iterable_object]

  • expression:是一個表達式,裏面對循環變量x的一些操作
  • x:是循環變量
  • iterable_object:是一個可迭代的對象,這樣纔可以做循環

例子:對迭代對象[0, 1, 2, 3, 4]中的每一個元素做平方

if __name__ == '__main__':
    print([x**2 for x in range(5)])

# 輸出結果
[0, 1, 4, 9, 16]

2 python列表生成式和if語句結合使用

python列表生成式if語句結合的機構如下:

[expression for x in iterable_object if condition]

  • expression:是一個表達式,只有滿足if條件,纔會對循環變量x進行表達式expression中的操作
  • x:是循環變量
  • iterable_object:是一個可迭代的對象,這樣纔可以做循環
  • condition:是if語句的判斷條件,只有滿足condition的循環變量纔會執行expression

例子:對迭代對象[0, 1, 2, 3, 4]中大於2的元素做平方

if __name__ == '__main__':
    print([x**2 for x in range(5) if x > 2])
 
# 輸出結果
[9, 16]

3 python列表生成式和if…else語句結合使用

python列表生成式if...else語句結合的機構如下:

[expression1 if condition else expression2 for x in iterable_object ]

  • expression1:一個表達式,只有滿足if條件,纔會對循環變量x進行表達式expression1中的操作
  • expression2:一個表達式,只有不滿足if條件,纔會對循環變量x進行表達式expression2中的操作
  • x:是循環變量
  • iterable_object:是一個可迭代的對象,這樣纔可以做循環
  • condition:是if語句的判斷條件,只有滿足condition的循環變量纔會執行expression1,否則執行expression2

例子:對迭代對象[0, 1, 2, 3, 4]中大於2的元素做平方,小於2的做立方

if __name__ == '__main__':
    print([x**2 if x>2 else x**3 for x in range(5)])
 
# 輸出結果
[0, 1, 8, 9, 16]

4 python生成表達式和zip函數結合使用

python生成表達式zip函數結合的結構如下:

[expression for x, y in zip(list1, list2)]

例如:我們有兩個列表,把名字和性別配對,然後生成一個列表

if __name__ == '__main__':
    list1 = ["Tom", "Jack", "Will", "July"]
    list2 = ["man", "man", "man", "woman"]
    print([(name, sex) for name, sex in zip(list1, list2)])
    # 或 對錶達式進行一些更復雜的操作(甚至可以調用一些函數)
    print(["名字:{}, 性別{}:".format(name, sex) for name, sex in zip(list1, list2)])

# 輸出結果
[('Tom', 'man'), ('Jack', 'man'), ('Will', 'man'), ('July', 'woman')]
['名字:Tom, 性別man:', '名字:Jack, 性別man:', '名字:Will, 性別man:', '名字:July, 性別woman:']
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章