我想弄清楚Python lambdas.lambda是现实生活中应该被遗忘的"有趣"语言项目之一吗?
我确信有一些可能需要它的边缘情况,但考虑到它的模糊性,它在未来版本中重新定义的可能性(我基于它的各种定义的假设)和降低的编码清晰度 - 应该是要避免吗?
这让我想起C类型的溢出(缓冲区溢出) - 指向顶部变量并重载以设置其他字段值.感觉就像是一种技术表演,但维护编码器的噩梦.
对于没有comp-sci背景的人来说,计算机科学领域的lambda是什么?
language-agnostic theory lambda computer-science terminology
我不太明白这个sorted()论点背后的语法:
key=lambda variable: variable[0]
Run Code Online (Sandbox Code Playgroud)
不是lambda随意的吗?为什么variable在看起来像是两次dict?
我有一个类似于下面的元组列表:
("Person 1",10)
("Person 2",8)
("Person 3",12)
("Person 4",20)
Run Code Online (Sandbox Code Playgroud)
我想要产生的是按元组的第二个值按升序排序的列表.所以L [0]应该("Person 2", 8)在排序之后.
我怎样才能做到这一点?使用Python 3.2.2如果有帮助.
Stack Overflow 上有很多关于这个一般主题的问答,但它们要么质量很差(通常是初学者的调试问题暗示的),要么以其他方式错过了目标(通常是不够通用)。至少有两种极其常见的方法会使幼稚的代码出错,初学者从关于循环的规范中获益更多,而不是从将问题作为拼写错误或关于打印所需内容的规范中获益。所以这是我尝试将所有相关信息放在同一个地方。
假设我有一些简单的代码,可以对一个值进行计算x并将其分配给y:
y = x + 1
# Or it could be in a function:
def calc_y(an_x):
return an_x + 1
Run Code Online (Sandbox Code Playgroud)
现在我想重复计算 的许多可能值x。我知道for如果我已经有要使用的值列表(或其他序列),我可以使用循环:
xs = [1, 3, 5]
for x in xs:
y = x + 1
Run Code Online (Sandbox Code Playgroud)
while或者,如果有其他逻辑来计算值序列,我可以使用循环x:
def next_collatz(value):
if value % 2 == 0:
return value // 2
else:
return 3 * value + 1
def collatz_from_19():
x = 19
while x != 1:
x …Run Code Online (Sandbox Code Playgroud) 我是python初学者-headbangin'。这是一个非常基本的问题,无论是使用google还是StackOverFlow,我似乎都找不到任何直接的答案。
问题:我有一个嵌套列表:
l = [
[1,4,3,n]
[2,2,4,n]
[3,1,5,n]
]
Run Code Online (Sandbox Code Playgroud)
我想按最小到最大的第二个值对整个列表进行排序。我最后将再次按每个嵌套列表的第三个值...和第n个值对列表进行排序。
如何根据第二,第三,第N个值排序?
提到了一个密钥,但是经常使用“ key = lambda”,这让我更加困惑。
编辑:谢谢你们的帮助。我能够使用您的建议来解决当前的问题。我会投票给你,但是显然,我还不能以这种形式表示感谢。我有一天会回来,给你你的声誉提高。
我试图排序以下混合的int和字符串列表,但改为获取TypeError.我想要的输出顺序是排序整数然后排序字符串.
x=[4,6,9,'ashley','drooks','chay','poo','may']
>>> x.sort()
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
x.sort()
TypeError: '<' not supported between instances of 'str' and 'int'
Run Code Online (Sandbox Code Playgroud)