问题描述
我目前有以下多种功能:
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”部分,因为它只是变成了一个字符串。 请问有什么想法吗?
谢谢
1楼
这是使用列表的pythonic方法:
vects = [
    CountVectorizer(parameters),
    CountVectorizer(parameters),
    CountVectorizer(parameters),
    CountVectorizer(parameters)
]
for v in vects:
    print(v)
 
  每当您看到从字符串动态生成变量名时,这就是一个警告,您需要一个更好的数据结构来表示您的数据。 就像列表或字典一样。
2楼
    当然不是这个,但试试globals (在 def 使用locals ):
for i in range(1,5):
    vect = globals()['vect_%s'%i]
    print(vect)
 
  虽然仍然是最pythonic的方式是使用@Oscar的解决方案
3楼
我更喜欢使用 list 或 dict
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
 
 4楼
您可以循环遍历所有参数。
vectors = []
parameters = []
#Put code for adding parameters here
for parameter in parameters:
    vectors.append(CountVectorizer(parameter))
 
  这将遍历您设置的参数并使用每个参数运行该函数。 您现在可以访问向量列表中的所有输出。