【问题标题】:Identical built-in function [duplicate]相同的内置函数[重复]
【发布时间】:2018-04-21 01:46:16
【问题描述】:

Python 3 中是否有用于函数lambda x: x 的内置函数?有时它可能会使一些代码更优雅。例如:

def my_sort(lst, key):
    ...

lst = [4, 3, 7, 1, 9]
my_sort(lst, key=lambda x: x)   # probably it can be written in a better way WITHOUT lambda x: x with the help of a standard function

我需要 Python 3 中的内置函数或标准函数,而不是像 lambda x: x 这样的表达式来改进我的代码。

【问题讨论】:

  • key=None?.... 为什么还要有钥匙?
  • @COLDSPEED None 不是函数。
  • 您要求更优雅的东西...您还想要什么? lambda x: x 恰好是 None 熟练模仿的身份函数。
  • 也许你应该向我们展示一个更好的例子来说明恒等函数在哪里真正有用。 FWIW,如果 lambda x: x 能完成这项工作(尽管它不如用 C 编码的函数那么快),那么它没有任何问题,并且您传递给它的函数不接受像 @ 这样的特殊值987654329@表示它应该使用标识函数。
  • 我猜你可以做identity=functools.partial(lambda x: x)。 :)

标签: python python-3.x


【解决方案1】:

pythonic 方法是使用None 的默认参数,使key 成为可选参数:

def my_sort(lst, key=None):
    if key is None:
        key = lambda x: x
    ...

lst = [4, 3, 7, 1, 9]
my_sort(lst)

【讨论】:

  • 您甚至可以将密钥声明缩短为key = key or (lambda x: x)。不是某些人喜欢的:)。
  • def my_sort(lst, key = lambda x:x), 也是可以的吧?
  • 感谢您的回答。但是,请仔细阅读我的问题。
  • @stack_n_queue None 让它看起来更像内置的sorted: sorted(iterable, /, *, key=None, reverse=False)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-19
  • 2013-07-22
  • 2012-04-30
  • 2013-01-31
  • 2014-08-09
  • 2020-12-11
相关资源
最近更新 更多