Python 如何使一个函数对任意长度的元组应用不同的公式?
对不起,我的标题,我想不出更好的表达方式了。 我想做的是做一个函数,它接受一个元组,并对每个数字应用不同的公式。 我的示例是以该函数为例: def 321 tup(tup): 让它在元组的第一个数字上加3,第二个数字乘以2,最后一个数字除以2。函数将只有3个变量。我意识到我可以做这样的函数 def 321tup(x,y,z):Python 如何使一个函数对任意长度的元组应用不同的公式?,python,tuples,Python,Tuples,对不起,我的标题,我想不出更好的表达方式了。 我想做的是做一个函数,它接受一个元组,并对每个数字应用不同的公式。 我的示例是以该函数为例: def 321 tup(tup): 让它在元组的第一个数字上加3,第二个数字乘以2,最后一个数字除以2。函数将只有3个变量。我意识到我可以做这样的函数 def 321tup(x,y,z): 使其应用于变量的公式,但我确实需要使其成为一个元组并产生一个元组。有什么线索吗?也许是这个?我自己还没有测试过 def tup321(tup): return (
使其应用于变量的公式,但我确实需要使其成为一个元组并产生一个元组。有什么线索吗?也许是这个?我自己还没有测试过
def tup321(tup):
return (tup[0] + 3, tup[1] * 2, tup[2] / 2)
我不能完全理解你的问题,我想也许你想要这个:
from operator import add, mul, div
def tuple_map(tpl, functions):
return [func(element, element) for element, func in zip(tpl, functions)]
print tuple_map((3, 2, 1), (add, mul, div))
输出:
[6, 4, 1]
嗯,我想知道你在找什么,但我迷路了。你能更具体地说明你在写函数的哪一部分遇到了麻烦吗?如何写函数,使它接受你在参数的第一个位置输入的任何数字,并对其应用公式,但对参数中的第二个和第三个数字应用不同的公式,并输出一个新的元组。是否要将这些公式传递给函数?
321tup
不是有效的函数名-它不能以数字开头我认为这只是作者提供的特定示例的解决方案。@timgeb,很可能是,但是考虑到目前这种模棱两可的措辞,很难做出更恰当的回答。哇,这就是解决办法!我试图将两个元组相互相加,使其过于复杂,而不知道可以添加一个元组并保持其有效性。我总是被告知这样做的方法,所以这是造成错误的原因。谢谢大家!@西摩,不客气!请记住zvone的评论,尽管函数不能以数字开头。我相应地更新了我的代码。@Seymour嗯,这让人困惑。下次请不要说你正在提供一个例子,而这个例子正是你想要的,硬编码的。