我正在尝试为我想要函数采用的参数创建名称列表。长度应该为32
,我想要类似bs=[b0,b1,b2,...,b31]
的东西,但我不想用b0,b1,...
编写,所以有什么方法可以用Python编写一个可以生成这样的列表?
编辑:是否有使参数值不为字符串的方法?我试图将它们作为参数放在这样的函数中:
def chiwork(a0,a1,a2,a3,bs):
ana=np.array([a0,a1,a2,a3])
betalat=[0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3]
chia=sum((ana-a)**2)+sum((bs*a[betalat]-amssr)**2)
return chia
该函数需要“知道” 32个bs,但是当bs中的元素在列表中时,无法解压缩它。
答案 0 :(得分:2)
使用列表理解:
bs=['b'+str(i) for i in range(32)]
答案 1 :(得分:1)
我认为这可以满足您的所有要求,因此可以大量使用Python's data model for function objects:
def my_func (b1, b2, b3, a1, a2, a3):
par_names = my_func.__code__.co_varnames[:6] # A tuple of strings of all param names
# It's ok to hard-code 6.
local_ns = locals()
par_vals = [local_ns[x] for x in par_names] # A list of all param values
another_func(par_vals[0], par_vals[3])
another_func(*par_vals[0:2]) # Unpacking first 2 params
def another_func(param1, param2):
print ("Inside another_func, (param1, param2) are:", param1, ",", param2)
my_func(10, 20, 30, 40, 50, 60)
输出:
Inside another_func, (param1, param2) are: 10 , 40
Inside another_func, (param1, param2) are: 10 , 20
注释:
b1
,b2
之类的命名约定。__code__.co_varnames
将包含参数名称,后跟局部变量名称。因此,我们为前6个元素建立索引,以仅获取参数名称。