如何将函数应用于元组?
How do I apply a function to a tuple?
这应该很简单:如何将函数应用于 Python 中的元组?
即:
Python 3.9.9 (main, Nov 16 2021, 09:34:38)
[Clang 13.0.0 (clang-1300.0.29.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> def g(a,b):
... return a+b
...
>>> tup = (3,4)
>>>
>>> g(tup)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: g() missing 1 required positional argument: 'b'
>>> g.apply(tup)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'function' object has no attribute 'apply'
>>> apply(g,tup)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'apply' is not defined
我当然可以写一个 g
的版本,它需要一个元组,或者甚至是一个为一般的 2-arg 函数做的转换函数:
>>> def conv2(fun):
... def tuplefun(tup):
... (a,b) = tup
... return fun(a,b)
... return tuplefun
...
>>> tuple_g = conv2(g)
>>> tuple_g(tup)
7
...但这不适用于任意参数函数的一般情况。
(ObResearch:我搜索了这个问题的答案大约五分钟,发现了一大堆关于 pandas 数据帧的问题,但 none 似乎回答了这个问题。我是确保这有一个简单的答案,我很抱歉没有找到它,但如果我没有找到它,那么可能很多其他人也是......换句话说,“重复问题#XXXXX”将是非常受欢迎的在这里。)
(对我来说具有讽刺意味的是,我最喜欢的问题是 完全相同的问题 关于 Scala 语言,从 2010 年开始。我想我的角色在生活中是函数式程序员袭击其他语言......?)
你这样写:
>>> g(*tup)
使用元组解包语法:
>>> def g(a,b):
... return a+b
...
>>> tup = (3,4)
>>>
>>> g(*tup)
这应该很简单:如何将函数应用于 Python 中的元组?
即:
Python 3.9.9 (main, Nov 16 2021, 09:34:38)
[Clang 13.0.0 (clang-1300.0.29.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> def g(a,b):
... return a+b
...
>>> tup = (3,4)
>>>
>>> g(tup)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: g() missing 1 required positional argument: 'b'
>>> g.apply(tup)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'function' object has no attribute 'apply'
>>> apply(g,tup)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'apply' is not defined
我当然可以写一个 g
的版本,它需要一个元组,或者甚至是一个为一般的 2-arg 函数做的转换函数:
>>> def conv2(fun):
... def tuplefun(tup):
... (a,b) = tup
... return fun(a,b)
... return tuplefun
...
>>> tuple_g = conv2(g)
>>> tuple_g(tup)
7
...但这不适用于任意参数函数的一般情况。
(ObResearch:我搜索了这个问题的答案大约五分钟,发现了一大堆关于 pandas 数据帧的问题,但 none 似乎回答了这个问题。我是确保这有一个简单的答案,我很抱歉没有找到它,但如果我没有找到它,那么可能很多其他人也是......换句话说,“重复问题#XXXXX”将是非常受欢迎的在这里。)
(对我来说具有讽刺意味的是,我最喜欢的问题是 完全相同的问题 关于 Scala 语言,从 2010 年开始。我想我的角色在生活中是函数式程序员袭击其他语言......?)
你这样写:
>>> g(*tup)
使用元组解包语法:
>>> def g(a,b):
... return a+b
...
>>> tup = (3,4)
>>>
>>> g(*tup)