namedtuple takes 3 arguments?
本问题已经有最佳答案,请猛点这里访问。
尝试在python3 jupyter笔记本中运行此代码:
1 2 3 4 5 | t = namedtuple('a', 'b') a = [1,0,1] b = [1,1,1] Out, In = np.asanyarray(a), np.asanyarray(b) t(Out.shape[0], *In.shape) |
返回错误:
1 2 3 4 5 6 7 8 | --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-151-7955ff03a60d> in <module>() 3 b = [1,1,1] 4 Out, In = np.asanyarray(a), np.asanyarray(b) ----> 5 t(Out.shape[0], *In.shape) TypeError: __new__() takes 2 positional arguments but 3 were given |
是否可以用两个参数创建NamedDuple?
更新:
为什么这不会引起类似的问题:
1 2 3 4 5 6 7 8 | t = namedtuple('ps', 'Out In S') a = np.asanyarray([[1]]) b = np.asanyarray([[1]]) d = t(a.shape[0], *b.shape) d |
计算:
1 | ps(Out=1, In=1, S=1) |
更新2:
我想我现在明白了,
命名元组构造函数的第一个参数是
因此,您应该将EDOCX1[1]构造为:
1 2 3 | # v parameters t = namedtuple('t', ('a', 'b')) # ^ type name |
为了方便起见,还可以提供一个以空格分隔的参数字符串。所以一个等价的是:
1 2 | #t = namedtuple('t', 'a b') # ^ space separated list of parameters |