如何对元组的每个元素应用一些操作
How to apply some operation to each element of a tuple
我有一个像 (p1, p2)
这样的元组(例如 (5,3) 或 (2,1))
我想对元组的每个元素 应用相同的操作 。 (顺便说一句,此操作将为每个 元素提供 另一个元组,因此我将有一个元组的元组,但这不是必要条件)
首先我想到了
for element in (3,2):
res=function(element)
但首先,这似乎不是一个优雅的解决方案,第二,我仍然需要从每个 res
中形成一个元组以获得 (function(3),function(2))
解决方案
如何将函数(带有多个参数)应用于元组的每个元素一次并获得返回值的元组?
一种方法使用列表理解:
def add_one(x):
return x + 1
tpl = (5, 3)
output = tuple([add_one(x) for x in tpl])
print(output) # (6, 4)
如果我理解你的问题是正确的,map
也应该能胜任这项工作:
tuple(map(func, tpl))
其中 func
是您定义的单参数函数。
现在,如果您有一个 带有多个参数的函数 ,您希望将其应用于每个元素,例如:
def func(x, y, z): return x*y+z
我假设 2 个元素(让我们取 y 和 z)是固定的,而 x 将由元组中的值决定。
我认为有两种做法:
要么定义一个带有 2 个固定参数的新函数和 map
:
def func1(x): return func(x, 3, 2)
tuple(map(func1, tpl))
或者贴图如下(我觉得不太雅致,不过是个人口味问题,也许吧):
tuple(map(lambda x: func(x, 3, 2), tpl))
您可以考虑使用生成器理解然后将其转换为元组:
>>> data = (3, 5, 7, 9)
>>> tuple((function(x) for x in data))
我有一个像 (p1, p2)
这样的元组(例如 (5,3) 或 (2,1))
我想对元组的每个元素 应用相同的操作 。 (顺便说一句,此操作将为每个 元素提供 另一个元组,因此我将有一个元组的元组,但这不是必要条件)
首先我想到了
for element in (3,2):
res=function(element)
但首先,这似乎不是一个优雅的解决方案,第二,我仍然需要从每个 res
中形成一个元组以获得 (function(3),function(2))
解决方案
如何将函数(带有多个参数)应用于元组的每个元素一次并获得返回值的元组?
一种方法使用列表理解:
def add_one(x):
return x + 1
tpl = (5, 3)
output = tuple([add_one(x) for x in tpl])
print(output) # (6, 4)
如果我理解你的问题是正确的,map
也应该能胜任这项工作:
tuple(map(func, tpl))
其中 func
是您定义的单参数函数。
现在,如果您有一个 带有多个参数的函数 ,您希望将其应用于每个元素,例如:
def func(x, y, z): return x*y+z
我假设 2 个元素(让我们取 y 和 z)是固定的,而 x 将由元组中的值决定。 我认为有两种做法:
要么定义一个带有 2 个固定参数的新函数和
map
:def func1(x): return func(x, 3, 2) tuple(map(func1, tpl))
或者贴图如下(我觉得不太雅致,不过是个人口味问题,也许吧):
tuple(map(lambda x: func(x, 3, 2), tpl))
您可以考虑使用生成器理解然后将其转换为元组:
>>> data = (3, 5, 7, 9)
>>> tuple((function(x) for x in data))