1. 程式人生 > 其它 >三元表示式、列表生成式、生成器表示式和匿名函式

三元表示式、列表生成式、生成器表示式和匿名函式

一、三元表示式

    三元表示式語法格式

      值1 if 條件 else 值2

      當條件成立時採用if條件前的值1,當條件不成立時採用else後面的值2

    當功能需求是二選一的情況下,推薦使用三元表示式

    

def index(a,b):
    # if a > b:  
    #     return a
    # return b  相當於省略了這三步 將三步變為一步執行
    return a if a>b else b

print(index(1,2))


res = 'hello' if 10 > 5 else 'hahaha'
print(res)

二、列表生成式

    列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。

    列表生成式的結構是在一箇中括號裡包含一個表示式,然後是一個for語句,然後是0個或多個for或者if語句。列表表示式可以是任意的,意思是你可以在列表中放入任意型別的物件。返回結果將是一個新的列表,               在這個以if和for語句為上下文的表示式執行完成之後產生。

    語法結構:

l = [1, 2, 3, 4, 5, 6]
# 傳統做法
res = []
for j in l:
res.append(j+1)
print(res)
# 列表生成式
res1 = [i+1 for i in l]
print(res1)
# 也可以在在l後面增加一個判斷
res1 = [i + 1 for i in l if i != 1]
print(res1) # [3, 4, 5, 6, 7] 使i=1時移除列表

三、字典生成式

    字典生成式也同樣是python中快捷生成字典的一種方式

    需要用到enumerate(被迴圈物件,start = 0)

    針對該方法使用for 迴圈會產生兩個值,第一個值是從0開始的數字,第二個是被迴圈物件中的元素

    還可以通過控制start引數來控制起始的數字

      

l = ['name', 'mike', 'age', '18', 'hobby', 'read']

res = {i: j for i, j in enumerate(l) if j != 'read'}
print(res)

  

四、匿名函式

  在定義函式的時候,不想給函式起一個名字。這個時候就可以用lambda來定義一個匿名函式

  語法格式: lambda 形參:返回值

  匿名函式一般都不會單獨使用,都是配合其他函式一起使用

    例如搭配對映map()使用

l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
def index(n):
    return n ** 2
print(list(map(lambda x:x**2, l)))