使用 for 循环循环遍历函数



我目前有多个函数如下:

vect_1 = CountVectorizer(parameters)
vect_2 = CountVectorizer(parameters)
vect_3 = CountVectorizer(parameters)
vect_3 = CountVectorizer(parameters)

我正在尝试迭代它们中的每一个。我试过:

for i in range(4):
vect = vect_[i]
print vect

我正在努力正确定义"vect"部分,因为它只是变成了一个字符串。有什么想法吗?

谢谢

这是pythonic方法,使用列表:

vects = [
CountVectorizer(parameters),
CountVectorizer(parameters),
CountVectorizer(parameters),
CountVectorizer(parameters)
]
for v in vects:
print(v)

每当您看到变量名称是从字符串动态生成的时,这都是一个警告,表明您需要更好的数据结构来表示您的数据。就像列表或字典一样。

当然不是这个,但请尝试globals(在def使用locals(:

for i in range(1,5):
vect = globals()['vect_%s'%i]
print(vect)

尽管最python的方式仍然是使用@Oscar的解决方案

您可以遍历所有参数。

vectors = []
parameters = []
#Put code for adding parameters here
for parameter in parameters:
vectors.append(CountVectorizer(parameter))

这将循环访问您设置的参数,并使用每个参数运行函数。现在,您可以从向量列表中访问所有输出。

我更喜欢使用列表或字典

def func_a(a):
print(a)

def func_b(b):
print(b, b)

def func_c(c):
print(c, c, c)

def func_d(d):
print(d, d, d, d)

# use list
func_list = [func_a, func_b, func_c, func_d]
for i in range(4):
func_list[i](i)
# use dict
func_dict = {"vect_1": func_a,
"vect_2": func_b,
"vect_3": func_c,
"vect_4": func_d}
for i in range(1, 5):
func_dict["vect_" + str(i)](i)

将打印

0
1 1
2 2 2
3 3 3 3
1
2 2
3 3 3
4 4 4 4

最新更新