[英]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.