为什么我的 for 循环重写了我正在循环浏览的名称列表?



我有pandas数据帧的列名"sample_names"列表。我使用for循环在数据帧中的每一列中传递一个函数"lambdas",这可以正常工作。但是,for循环也在重写列名列表"sample_names",以便该列表只包含最后一个样本名,而不是所有样本名。不确定为什么会发生这种情况?

sample_name列表的格式如下:['GMBP02Z1-1','GMBP02 Z1-2','GM BP02 Z2-1','GM BP02 Z1-2',…]

输出lambda_values的形式为:[数组([3.74993618-44.141515681-35.77677525299.47783486]

for i in sample_names:
sample_names = i
params = OP_constants(subset_radii, degree=4)
lambda_values.append(lambdas(np.log(subset_y2[sample_names]), subset_radii, params = params, degree = 4))
print(lambda_values)

列表对象"sample_names"存在于循环之外。循环中的第一行总是:

sample_names=i

因此,在每个循环开始时,您都将sample_names对象修改为"sample_names"列表中的最新字符串。在最后一个循环之后,这是sample_names中的最后一项。

也许将循环中的第一行(以及循环中对sample_names的所有后续引用(更改为:

sample_name=i

会实现您的目标吗?

最新更新