簡體   English   中英

Python 3 中 max([a for a in [1,2]]) 和 max(a for a in [1,2]) 之間的區別

[英]Difference between max([a for a in [1,2]]) and max(a for a in [1,2]) in Python 3

我發現他們都會輸出預期的結果2

  • max([a for a in [1,2]])max() + list comprehension ,一個簡單的。

  • max(a for a in [1,2])max() + ? . 為什么有效? 我們將a for a in [1,2]的結構命名為什么?

生成器的形式為(a for a in [1,2]) 我懷疑(a for a in [1,2])內部max(a for a in [1,2])是一個生成器。 但是,如果是這樣,為什么可以忽略一對()呢? 從技術上講,它應該是max((a for a in [1,2]))

謝謝。

那實際上是一個生成器表達式。 生成器表達式可以使用參數列表中的() 前提是它們是傳遞給函數的唯一參數。 如果有更多參數,它們需要自己的一對括號。

您可以通過快速測試自行驗證:

def func(arg):
    print(type(arg))

func(n for n in range(10))  # Prints <class 'generator'>

來自PEP 289

語法要求生成器表達式始終需要直接位於一組括號內,並且兩邊不能有逗號。 . . . [I]fa 函數調用有一個位置參數,它可以是一個沒有額外括號的生成器表達式,但在所有其他情況下,你必須將它加上括號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM