Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以使用lambda代替方法,作为sorted()中的键?_Python_Python 3.x_Lambda - Fatal编程技术网

Python 是否可以使用lambda代替方法,作为sorted()中的键?

Python 是否可以使用lambda代替方法,作为sorted()中的键?,python,python-3.x,lambda,Python,Python 3.x,Lambda,这是我第一次问问题。我已经从你那里得到了很多帮助,甚至没有问你。(感激的表情)。 几周前,我在这里找到了这段有用的代码 import re def yearly_sort(value): numbers = re.compile(r'(\d+)') parts = numbers.split(value) parts[1::2] = map(int, parts[1::2]) return parts 它在这里非常有效: def get_files_sorte

这是我第一次问问题。我已经从你那里得到了很多帮助,甚至没有问你。(感激的表情)。 几周前,我在这里找到了这段有用的代码

import re

def yearly_sort(value):
    numbers = re.compile(r'(\d+)')
    parts = numbers.split(value)
    parts[1::2] = map(int, parts[1::2])
    return parts
它在这里非常有效:

def get_files_sorted(path_to_dir):
   file_names = []
   for root, dirs, files in os.walk(path_to_dir):
      for file_name in sorted(files, key=yearly_sort):
         file_names.append(os.path.join(root, file_name))
   return file_names
现在,我在描述上述函数时遇到了一个问题(正如您已经从非描述性方法名称中看到的)

上述方法的名称应该是什么(而不是某些_sort())


这个方法是否可以在lambda中以某种方式压缩,以便sorted()中的key可以绑定到key=lambda?

它肯定可以是
lambda
函数。例如,看看这个

但是,如果您有复杂的函数,则永远不要将其移动到
lambda
,因为可读性会显著降低

这就是

复杂总比复杂好


它肯定可以是
lambda
函数。例如,看看这个

但是,如果您有复杂的函数,则永远不要将其移动到
lambda
,因为可读性会显著降低

这就是

复杂总比复杂好


如果先前编译了
numbers
,则可以将其压缩到lambda中(这会提高性能)


在这种情况下,我们会对第0项和第3项进行不必要的测试。可能更好,但这是复杂lambda的风险:性能和可实现性可能会受到影响。

您可以将其压缩到lambda中,前提是以前编译了
数字(这会提高性能)


在这种情况下,我们会对第0项和第3项进行不必要的测试。也许它会更好,但这是复杂lambda的风险:性能和易用性会受到影响。

为什么您觉得需要用lambda替换它?你了解lambda的工作原理吗?社区你好!你能把函数写成lambda函数吗yes@IgnacioVazquez-艾布拉姆斯在我看来它不适合一种方法。我的团队对描述性命名非常严格,我无法正确描述它。是的,我确实理解lambda是如何工作的,但是,对于这一点,我知道的还不够。当编码指南引导程序员跳转(并使代码更加神秘)以避免添加简单函数时……为什么您觉得需要用lambda来代替它?你了解lambda的工作原理吗?社区你好!你能把函数写成lambda函数吗yes@IgnacioVazquez-艾布拉姆斯在我看来它不适合一种方法。我的团队对描述性命名非常严格,我无法正确描述它。是的,我确实了解lambda是如何工作的,但是,对于这一点,我知道的还不够。当编码指南引导程序员跳转(并使代码更神秘)以避免添加一个简单的函数…对于排序(files,key=lambda name:[int(numbers.split(name)[1])中的文件名:是否可以改用这个函数?如果它也是这样做的话(您从未提供过任何输入字符串),那么是的!输入字符串类似于
“asdf_1234_asdf1234asdf.txt”
是的,它现在工作得好多了。谢谢:)@Jeanfor file_name in sorted(files,key=lambda name:[int(numbers.split(name)[1]):可以改用它吗?如果它也这样做(您从未提供过任何输入字符串),那么是的!输入字符串类似于
“asdf\u 1234\u asdf1234asdf.txt”
是的,它现在工作得好多了。谢谢:)@Jean
numbers = re.compile(r'(\d+)')
for file_name in sorted(files, key=lambda value : [int(x) if x.isdigit() else 0 for x in numbers.split(value)][1::2]):