Python中如何通过循环给变量拼接动态值以简化重复代码?
动态生成AgglomerativeClustering实例的可行方案
不推荐直接动态生成变量名
直接用ac+i的方式生成全局/局部变量虽然能实现,但会污染命名空间,后续维护、调试都很麻烦,不建议这么做。更合理的方式是用容器(字典或列表)来集中管理这些实例。
推荐方案1:用字典存储(保留ac2-ac6的命名标识)
字典可以直接映射你想要的变量名到对应的实例,直观且易维护:
from sklearn.cluster import AgglomerativeClustering # 创建空字典存储实例 ac_dict = {} # 循环生成ac2到ac6 for i in range(2, 7): # 可根据需求调整聚类参数,这里以n_clusters=i为例 ac_dict[f"ac{i}"] = AgglomerativeClustering(n_clusters=i) # 调用示例:获取ac2实例 ac2_instance = ac_dict["ac2"]
推荐方案2:用列表存储(按顺序管理)
如果不需要明确的ac2这类命名,只需要按顺序保存实例,列表是更轻量的选择:
from sklearn.cluster import AgglomerativeClustering ac_list = [] for i in range(2, 7): ac_list.append(AgglomerativeClustering(n_clusters=i)) # 调用示例:获取原ac2实例(对应列表索引0) ac2_instance = ac_list[0] # 获取原ac6实例(对应列表索引4) ac6_instance = ac_list[4]
非要动态生成变量名的实现(不推荐)
如果一定要生成ac2到ac6这类独立变量,可以通过修改全局命名空间实现,但强烈不建议在生产代码中使用:
from sklearn.cluster import AgglomerativeClustering for i in range(2, 7): globals()[f"ac{i}"] = AgglomerativeClustering(n_clusters=i) # 此时可直接使用ac2、ac3...ac6变量
内容的提问来源于stack exchange,提问作者sahir karigar
相关产品推荐
相关产品推荐

