Python 解包未指定数量的变量

Python 解包未指定数量的变量,python,python-3.x,Python,Python 3.x,所以我有一个元组列表。列表中的每个元组长度相同,但元组大小会根据列表的不同而不同。例如,一个列表可以包含长度为4的元组,另一个列表可以包含长度为5的元组。我想解包一个元组的每个值,并使用每个值乘以另一个列表中的一个元素。例如(具有长度为3的元组列表): 问题是,如果我使用另一个具有不同大小元组的列表,它将无法扩展 如果您不知道每个元组有多少个元素,那么解包将是一个坏主意。在您的示例中,您将执行以下操作: listMult = [sum(x*y for x, y in zip(tup, somel

所以我有一个元组列表。列表中的每个元组长度相同,但元组大小会根据列表的不同而不同。例如,一个列表可以包含长度为4的元组,另一个列表可以包含长度为5的元组。我想解包一个元组的每个值,并使用每个值乘以另一个列表中的一个元素。例如(具有长度为3的元组列表):


问题是,如果我使用另一个具有不同大小元组的列表,它将无法扩展

如果您不知道每个元组有多少个元素,那么解包将是一个坏主意。在您的示例中,您将执行以下操作:

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

通常,您会尝试使用迭代、starargs和其他直接对iterable进行操作的东西,而不是解包。

如前所述,这个问题没有完全指定。但问题有一个有趣且有用的变体,“如何从未知长度的元组中解包固定数量的元素?”

这个问题的答案可能对您有用:

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)

你实际上需要对元组做什么?使用更具体的用例知识来建议解包的替代方案会更容易。我更新了原始帖子,以反映我试图实现的目标。我用更合适的示例代码更新了我的答案。
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)