namedtuple 需要 3 个参数?
namedtuple takes 3 arguments?
正在尝试 运行 在 Python3 Jupyter notebook 中使用此代码:
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)
returns 错误:
---------------------------------------------------------------------------
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
是否可以创建带有两个参数的命名元组?
更新:
为什么这不会导致类似的问题:
t = namedtuple('ps', 'Out In S')
a = np.asanyarray([[1]])
b = np.asanyarray([[1]])
d = t(a.shape[0], *b.shape)
d
计算:
ps(Out=1, In=1, S=1)
更新 2:
我想我现在明白了 namedtuple('ps', 'Out In S')
翻译成 namedtuple('name_of_tuple', 'tuple_values_seperated_by_spaces')
命名元组构造函数的第一个参数是typename
:命名元组的名称,而不是参数。 [documentation]
因此您应该将 t
构造为:
# v parameters
t = namedtuple(<b>'t', ('a', 'b')</b>)
# ^ type name
为了更方便,您还可以提供space分隔的一串参数。所以等效的是:
#t = namedtuple('t', <b>'a b'</b>)
# ^ space separated list of parameters
正在尝试 运行 在 Python3 Jupyter notebook 中使用此代码:
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)
returns 错误:
---------------------------------------------------------------------------
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
是否可以创建带有两个参数的命名元组?
更新:
为什么这不会导致类似的问题:
t = namedtuple('ps', 'Out In S')
a = np.asanyarray([[1]])
b = np.asanyarray([[1]])
d = t(a.shape[0], *b.shape)
d
计算:
ps(Out=1, In=1, S=1)
更新 2:
我想我现在明白了 namedtuple('ps', 'Out In S')
翻译成 namedtuple('name_of_tuple', 'tuple_values_seperated_by_spaces')
命名元组构造函数的第一个参数是typename
:命名元组的名称,而不是参数。 [documentation]
因此您应该将 t
构造为:
# v parameters
t = namedtuple(<b>'t', ('a', 'b')</b>)
# ^ type name
为了更方便,您还可以提供space分隔的一串参数。所以等效的是:
#t = namedtuple('t', <b>'a b'</b>)
# ^ space separated list of parameters