【问题标题】:Writing a function of two variables as a function in one variable将两个变量的函数写成一个变量中的函数
【发布时间】:2017-07-23 19:04:17
【问题描述】:

假设我在 2 个变量中有以下函数 -

def banana(x,y):
    return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2)

我想把它写成 -

def banana(x):

这里的 x 是两个变量的向量;可以吗?

感谢您的帮助!

【问题讨论】:

    标签: python arguments function-prototypes argument-unpacking


    【解决方案1】:

    解压函数开头的参数:

    def banana(args):
        x, y = args
        return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2)
    

    或直接在定义行:

    def banana((x, y)):
        return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2)
    

    【讨论】:

      【解决方案2】:

      是的,这是可能的:

      def _banana(x):
          return banana(*x)
      

      【讨论】:

        【解决方案3】:

        你可以写:

        def banana(vector):
            x, y = vector
            return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2)
        

        【讨论】:

          【解决方案4】:

          可能类似于

          def banana(x):
              return exp(((-x[0]**2/200))-0.5*(x[1]+0.05*(x[0]**2) - 100*0.05)**2)
          

          【讨论】:

          • 反引号仅用于少于一行的代码格式化块。对多行块使用四空格缩进以将格式设置为连续块和颜色语法渲染。
          • @CharlesDuffy,谢谢!
          • NP。 (我冒昧地在这里自己修复了这个问题;您可以查看编辑历史记录以了解不同之处)。
          【解决方案5】:

          是的,当然有可能。 您可以使用列表或元组。将两个变量放入列表或元组中

          x = [5, 7] # A list
          x = (5, 7) # A tuple
          

          你的功能应该是这样的:

          def banana(x):
              x, y = x # Unpacking
              return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2)
          

          https://docs.python.org/3.6/tutorial/datastructures.html查看更多信息

          【讨论】:

            【解决方案6】:

            你可以用列表来写

            def banana(x):
                return exp(((-x[0]**2/200))-0.5*(x[1]+0.05*(x[0]**2) - 100*0.05)**2)
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-04-01
              • 1970-01-01
              • 2014-08-17
              • 1970-01-01
              • 2021-12-04
              • 2017-09-20
              • 1970-01-01
              • 2017-09-09
              相关资源
              最近更新 更多