[英]Python list unpacking, is this expensive? Is it inefficient?
假設我有一個Python函數可返回多個元素,例如myfoo0()
def myfoo0():
return([1, 2, 3])
並將其用作:
fit = myfoo0();
現在,考慮使用一些fit
條目作為輸入的函數。 例如:
def myfoo1(fit):
[a, b, c] = fit
return(doSomething(a))
現在,如果我將其編寫為:
fit = myfoo0();
out = myfoo1(fit)
(一個例子是,當我有許多功能myfoo1
,..., myfoon
的每個使用不同組分fit
)我的問題是如何做上面的代碼(與所述的條目的命名fit
的主體內myfoo1
)相比較(從性能角度)到這一點:
[a, b, c] = myfoo0();
out = myfoo2(a)
哪里
def myfoo2(a):
return(doSomething(a))
特別是,在函數內部拆開元組的解決方案是否會產生大量的額外成本(例如,在復制方面)?
這里有一些誤解:
fit = myfoo0();
不復制任何內容。 fit
只是對myfoo0()
返回的列表的引用,而不是副本。
[a, b, c] = myfoo0();
也不會創建新列表。 另一方面,您有3個變量分別引用第一,第二和第三列表成員。
out = myfoo1(fit)
與myfoo1(a)
。 第一個調用將myfoo1作為第一個參數傳遞給列表,第二個調用將myfoo1作為第一個參數傳遞給第一個列表成員。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.