【发布时间】:2020-12-08 16:35:13
【问题描述】:
我正在尝试使用 for 循环用命名元组填充一个元组。
下面的示例代码有效:
import collections
Experiment = collections.namedtuple('Experiment', ['parameter', ])
nsize = 3
parameters = {}
for n in range(0, nsize):
parameters[n] = n +1
experiments = (
Experiment(parameter = parameters[0]),
Experiment(parameter = parameters[1]),
Experiment(parameter = parameters[2]),)
但是,我想用 for 循环替换最后一部分:
for n in range(0, nsize):
experiments[n] = Experiment(parameter = parameters[n])
这给出了错误:
TypeError: 'tuple' object does not support item assignment
有什么想法吗?
【问题讨论】:
-
元组不是不可变的吗?在这种情况下,您无法更改它是有道理的。
-
如果
parameters的索引真的只是一组从0 到nsize - 1的连续整数,请考虑使用列表。parameters = list(range(1,nsize+1))。那么 Mark Meyer 的回答就变成了简单的tuple(Experiment(x) for x in parameters)。