【问题标题】:a better version of the following code (python)以下代码的更好版本(python)
【发布时间】:2013-09-01 04:37:34
【问题描述】:

所以这里我有以下代码

def u_id(_id = '6397' , uid = '97492035'):
  n = _id if _id != None else '5000'
  try:
    return "".join(list(map(lambda x: str(x[0] + x[1])[-1], list(zip(list(map(lambda x: int(x), n)), list(map(lambda x: int(x), uid[4:])))))))
  except ValueError:
    return "none"

说实话,这看起来相当不必要。该函数的工作方式是接受提供的 uid 和 _id 并返回“6119”。基本上我无法从它的编码方式中弄清楚这段代码的工作方式。是否有一种不同且不那么令人费解的编码方式?或者如果不解释这个功能是如何工作的。谢谢。

【问题讨论】:

  • 我真的不想回答这个问题,但我想评论一下这段代码中让我发笑的一些事情。 list(zip()) 当 zip() 返回一个列表时...返回“none”,使用无的语言,在一行中使用 2 个空格缩进和重复的 lambda。这是来自混淆代码竞赛吗?

标签: python function map lambda zip


【解决方案1】:

看起来你的函数可以这样简化:

"".join(str(int(x) + int(y))[-1] for x, y in zip(_id, uid[4:]))

但是对于给定的参数,它返回'8322',而不是'6119'

【讨论】:

    【解决方案2】:

    这个函数真的被混淆了,但它并没有像你想象的那样做。你说它返回 '6119' 但是如果我运行以下代码

    def u_id(_id = '6397' , uid = '97492035'):
      n = _id if _id != None else '5000'
      try:
        return "".join(list(map(lambda x: str(x[0] + x[1])[-1], list(zip(list(map(lambda x: int(x), n)), list(map(lambda x: int(x), uid[4:])))))))
      except ValueError:
        return "none"
    
    print u_id()
    

    我的输出是8322

    我还要补充一点,代码使用的是2-space缩进,这不是很正统,最好使用4-space。

    我不会为你解决这个问题(看起来很乏味,写这个的人不是很清楚!)但我会告诉你如何解决它 - 你需要获得每个内部函数,将它们放在自己的行上并打印出它们每个的输出。

    【讨论】:

    • 哦,我输入的值可能不是正确的。通常这是从另一个函数调用的
    • 那么应该做什么呢?这种深层次的嵌套非常难以调试,尤其是在函数点未知的情况下。
    • 根据_id和uid这两个数字返回一个值
    • 返回的值然后在另一个函数中使用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 2013-06-28
    • 1970-01-01
    相关资源
    最近更新 更多