基于输入参数的函数替换

Substitution in function based on input parameter

假设我有多个名为 data_w1data_w2data_w3、...、data_wn 的列表。我有一个以整数 band 作为输入的函数,我希望该函数只对相应的列表进行操作。

我熟悉字符串替换,但我在这里不处理字符串,那么我该怎么做呢?一些伪代码:

def my_function(band):
    wband_new = []
    for entry in data_wband:
        # do stuff
        wband_new.append( #new stuff )
    return wband_new

但是上面的操作并没有像预期的那样工作,因为我得到的错误是没有定义任何带有 wband 的东西。我该怎么做?

假设您在函数之前的脚本中有 data 变量。您需要做的是将 data_wband 替换为 globals()['data_w'+str(band)]:

data_w1 = [1,2,3]
data_w2 = [4,5,6]

def my_function(band):
    wband_new = []
    for entry in globals()['data_w'+str(band)]:
        # do stuff
        wband_new.append( #new stuff )
    return wband_new

不太确定你在问什么,但如果你的意思是列表 1、2、...、n 然后是一个整数 i 并且你想获得第 i 个列表,只需列表使用整数 i 列出并索引外部列表(在您的情况下称为 band)。

l = [data_w1, data_w2, data_w3]
list_to_operate_on = l[band]
func(list_to_operate_on)