簡體   English   中英

Object 在列表理解中使用元組解包創建

[英]Object creation with tuple unpacking within a list comprehension

我很好奇我是否可以解壓縮從 function 返回的元組並使用解壓縮的值來創建 Object,所有這些都在列表理解范圍內。

我希望使用的代碼如下所示:

data = [
    Availability(
        user=random.randrange(100),
        start_time, end_time=generateTimes(),
    )
    for x in range(10000)
]

上面的代碼給了我錯誤SyntaxError: positional argument follows keyword argument 如果可能的話,我更喜歡使用列表理解而不是傳統的 for 循環。

start_time, end_time=generateTimes()

這不會解包返回值。 這會將(可能未定義的)變量start_time作為位置參數傳遞(這就是您獲得SyntaxError的原因),並將generateTimes()的兩個返回值作為關鍵字參數傳遞。 不可能像您那樣做,您唯一的希望如下:
如果您有這樣定義的Availability構造函數:

    def __init__(self, user=0, start_time=0, end_time=1)

您可以省略關鍵字並像位置關鍵字一樣傳遞 arguments。

Availability(
        random.randrange(100),
        *generateTimes()
)

但是,如果您的 Availability class 構造函數具有超過這三個關鍵字 arguments 這很可能不起作用。 然后,您必須像這樣調用 function 兩次:

Availability(
        random.randrange(100),
        start_time=generateTimes()[0],
        end_time=generateTimes[1]
)

編輯我使用map()

data = [
    Availability(
        user=random.randrange(100),
        start_time=start_time, end_time=end_time
    )
    for start_time, end_time in map(lambda _: generateTimes(), range(10000))
]

暫無
暫無

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

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