2024-06-17 09:17:22 发布
网友
在一本书上看到了一些代码,但就是无法理解,甚至试图通过一步一步地运行来破译,但对我来说它仍然是希腊语。。。(第二个星期一行程) (我有点了解每个部分,例如range或sorted或lambda-除了放在一起)
range
sorted
lambda
sorted(range(-3,4), key=lambda x: x*x)
输出:
[0,-1,1,-2,2,-3,3]
试着一步一步地做。 让我们从range开始,这里将提供数字-3,-2,-1,0,1,2和3
-3
-2
-1
0
1
2
3
sorted然后在每个项目上运行,并使用key参数中提供的函数。这些项中的每一项都通过lambda的x参数传递。然后lambda处理这个x(表示为range中的数字)并执行一些操作,在您的例子中,它只获取数字x的平方。然后返回平方值,sorted函数使用此返回的平方值以升序进行比较(请记住sorted以升序排列列表,除非指定为reverse=True)
key
x
reverse=True
key函数的目的是只告诉如何比较所传递的iterable/list中的每个项。但它不会影响将返回的元素的最终列表。它仍将使用已传递的列表。因此,这些值-3、-2、-1、0、1、2和3将是sorted函数返回的列表的元素,仅按照key参数进行排列
希望它有帮助,有意义
range定义为range(start, stop, step),不包括stop参数
range(start, stop, step)
定义为sorted(iterable, key=key, reverse=reverse)的sorted似乎是这样工作的:
sorted(iterable, key=key, reverse=reverse)
输出原始输入值,但按键排序,在本例中按其平方排序。正方形将负值转换为正值,然后应用排序,最后按顺序返回原始值
在命令行上对此进行了测试:
print(sorted(range(-3,4))) # [-3, -2, -1, 0, 1, 2, 3] print(sorted(range(-3,4), key=lambda x: x*x)) # [0, -1, 1, -2, 2, -3, 3]
(a1);;它表示sorted()(以及sort())排序都是稳定的:
sorted()
sort()
Sorts are guaranteed to be stable. That means that when multiple records have the same key, their original order is preserved.
它是这样工作的:b
range函数返回值[-3, -2, -1, 1, 2, 3]
[-3, -2, -1, 1, 2, 3]
现在,令人困惑的关键参数为每个要排序的值调用lambda,而使用这些值对它们进行排序
这意味着列表是按平方[9,4,1,0,1,4,9]排序的,而不是按range函数返回的实际数字排序的
例如:
sorted(range(-3,4), key=lambda x: x*-1)
将返回[3, 2, 1, 0, -1, -2, -3]
[3, 2, 1, 0, -1, -2, -3]
试着一步一步地做。 让我们从
range
开始,这里将提供数字-3
,-2
,-1
,0
,1
,2
和3
sorted
然后在每个项目上运行,并使用key
参数中提供的函数。这些项中的每一项都通过lambda
的x
参数传递。然后lambda
处理这个x
(表示为range
中的数字)并执行一些操作,在您的例子中,它只获取数字x
的平方。然后返回平方值,sorted
函数使用此返回的平方值以升序进行比较(请记住sorted
以升序排列列表,除非指定为reverse=True
)key
函数的目的是只告诉如何比较所传递的iterable/list中的每个项。但它不会影响将返回的元素的最终列表。它仍将使用已传递的列表。因此,这些值-3
、-2
、-1
、0
、1
、2
和3
将是sorted
函数返回的列表的元素,仅按照key
参数进行排列希望它有帮助,有意义
range
定义为range(start, stop, step)
,不包括stop参数定义为
sorted(iterable, key=key, reverse=reverse)
的sorted
似乎是这样工作的:输出原始输入值,但按键排序,在本例中按其平方排序。正方形将负值转换为正值,然后应用排序,最后按顺序返回原始值
在命令行上对此进行了测试:
(a1);;它表示
sorted()
(以及sort()
)排序都是稳定的:它是这样工作的:b
range
函数返回值[-3, -2, -1, 1, 2, 3]
现在,令人困惑的关键参数为每个要排序的值调用
lambda
,而使用这些值对它们进行排序这意味着列表是按平方[9,4,1,0,1,4,9]排序的,而不是按range函数返回的实际数字排序的
例如:
将返回
[3, 2, 1, 0, -1, -2, -3]
相关问题 更多 >
编程相关推荐