簡體   English   中英

解包未指定數量的變量

[英]Unpacking an unspecified amount of variables

所以我有一個元組列表。 列表中的每個元組將具有相同的長度,但元組大小將根據列表而變化。 例如,一個列表可以包含長度為4的元組,另一個列表可以包含長度為5的元組。我想解壓縮元組的每個單獨值,並使用每個值將其乘以另一個列表中的元素。 例如(帶有長度為3的元組列表):

somelist = [a,b,c]
tuplelist = [(2,3,5),(5,7,5),(9,2,4)]
listMult = []
for x,y,z in tuplelist:
    listMult.append([somelist[0]*x,somelist[1]*y,somelist[2]*z])

這個問題是,如果我使用另一個包含不同大小元組的列表,它將無法擴展。

如果您不知道每個元組有多少元素,那么解壓縮將是一個壞主意。 在您的示例中,您將改為執行以下操作:

listMult = [sum(x*y for x, y in zip(tup, somelist)) for tup in tuplelist]

通常,您會嘗試使用迭代,starargs和其他直接操作迭代的東西而不是解包。

如上所述,問題未完全明確。 但是有一個有趣且有用的問題變體,“如何從未知長度的元組中解包固定數量的元素?”。

答案可能對您有用:

tuple_list = [(2,3), (5,7,5), (9,2,4,2)]
pad_tuple = (0, 0, 0)
for t in tuple_list:
    t += pad_tuple             # make sure the tuple is sufficiently long
    x, y, z = t[:3]            # only extract the first three elements
    print(x,y,z)

暫無
暫無

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

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