Python遍历列表为每个元素创建对应对象的实现方法求助
解决方案
问题原因
你之前的循环里,sample只是临时迭代变量,每次赋值只会覆盖这个变量本身,并不会创建对应名称的独立对象,所以无法达到预期效果。
方法一:使用字典存储(推荐)
用字典映射样本名称和对应对象,这是Python中动态管理这类对象的标准方式,清晰且易于维护:
def read_10X(filtered_matrix_h5): matrix = sc.read_10x_h5(filtered_matrix_h5) matrix.var_names_make_unique() return matrix list_sample = ['sampleA', 'sampleB','sampleC'] sample_objects = {} for sample in list_sample: sample_objects[sample] = read_10X(f'../path/to/{sample}/file.h5')
后续可通过sample_objects['sampleA']、sample_objects['sampleB']访问对应对象。
方法二:直接创建全局变量(不推荐)
如果一定要创建与列表元素同名的全局变量,可使用globals()函数,但这种方式会污染全局命名空间,不利于代码调试和维护,仅适合特殊场景:
def read_10X(filtered_matrix_h5): matrix = sc.read_10x_h5(filtered_matrix_h5) matrix.var_names_make_unique() return matrix list_sample = ['sampleA', 'sampleB','sampleC'] for sample in list_sample: globals()[sample] = read_10X(f'../path/to/{sample}/file.h5')
执行后可直接通过sampleA、sampleB访问对应对象。
内容的提问来源于stack exchange,提问作者Quentin Chartreux
相关产品推荐
相关产品推荐

