Python中如何将列表子元素作为函数可变参数传递
问题解决:将列表子元素作为可变参数传入Python函数
首先看给定的函数定义:
from itertools import product as get_cartesian_product from arithmetic import get_iterable_sum def get_number_of_solutions(*possible_variables, target): number_of_solutions = 0 for comb in get_cartesian_product(possible_variables): if get_iterable_sum(comb) == target: number_of_solutions += 1 return number_of_solutions
以及定义的列表:
variables_possiblities = [[1, 3, 5, 7, 9], [1, 3, 5, 7, 9], [0, 2, 4, 6, 8, 10]]
需求是把variables_possiblities中的每个子列表作为*possible_variables的参数传入,而非把整个列表作为单个参数传递。
实现方法
直接使用Python的**解包运算符***来展开列表,将其内部的每个子列表作为独立的位置参数传入函数:
# 示例指定target值为10,可根据需求修改 target_value = 10 result = get_number_of_solutions(*variables_possiblities, target=target_value) print(result)
原理说明
函数定义中的*possible_variables是可变位置参数,它会把传入的多个位置参数打包成一个元组。反过来,在调用函数时用*前缀加列表,就能把列表的元素逐个拆解,作为独立的位置参数传递给函数,正好匹配*possible_variables的参数要求。这样get_cartesian_product(possible_variables)就能正确接收三个子列表,计算它们的笛卡尔积。
内容的提问来源于stack exchange,提问作者talopl
相关产品推荐
相关产品推荐

