我是一个蟒蛇新手试图实现以下目标:
我有一份清单清单:
lst = [[567,345,234],[253,465,756, 2345],[333,777,111, 555]]
Run Code Online (Sandbox Code Playgroud)
我想将map lst放入另一个列表中,该列表仅包含每个子列表中的第二个最小数字.所以结果应该是:
[345, 465, 333]
Run Code Online (Sandbox Code Playgroud)
例如,如果我只对最小数字感兴趣,我可以这样做:
map(lambda x: min(x),lst)
Run Code Online (Sandbox Code Playgroud)
我希望我能做到这一点:
map(lambda x: sort(x)[1],lst)
Run Code Online (Sandbox Code Playgroud)
但排序不会链.(返回无)
也不允许这样的事情:
map(lambda x: sort(x); x[1],lst) #hence the multiple statement question
Run Code Online (Sandbox Code Playgroud)
有没有办法在python中使用map但不定义命名函数?(例如,在ruby中使用匿名块很容易)
我需要从Javascript中的列表生成几个对象.在Python中,我写这个:
{key_maker(x): val_maker(x) for x in a_list}
Run Code Online (Sandbox Code Playgroud)
另一种问题是,是否存在jQuery.map()
聚合对象?这是我的猜测(不起作用):
var result = {}
$.map(a_list, function(x) {
$.extend(result, {key_maker(x): val_maker(x)})
})
Run Code Online (Sandbox Code Playgroud) 下面的代码给出了不同的输出Python2
和在Python3
:
from sys import version
print(version)
def execute(a, st):
b = 42
exec("b = {}\nprint('b:', b)".format(st))
print(b)
a = 1.
execute(a, "1.E6*a")
Run Code Online (Sandbox Code Playgroud)
Python2
打印:
2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)]
('b:', 1000000.0)
1000000.0
Run Code Online (Sandbox Code Playgroud)
Python3
打印:
3.2.3 (default, Apr 11 2012, 07:15:24) [MSC v.1500 32 bit (Intel)]
b: 1000000.0
42
Run Code Online (Sandbox Code Playgroud)
为什么Python2
将函数b
内部的变量绑定到execute
函数字符串中的exec
值,Python3
而不执行此操作?我怎样才能实现Python2
in 的行为Python3
?我已经尝试将全局和本地的字典传递给exec
函数Python3
,但到目前为止还没有任何工作.
---编辑---
在阅读了Martijns的回答后,我进一步分析了这一点 …
我目前正在介绍Python和计算理论课,最近有一个关于中期的难题,我根本无法解决.它涉及为添加数字的程序编写代码.我相信这个问题应该使用递归.我不记得问题究竟是如何措辞的,但这是基本的想法.
实现multiadder(n)
函数,它接受一个非负整数n
并将n
任意值加在一起.要添加的每个值必须作为单独的调用写入.例如:
>>> multi_three = multiadder(3)
>>> multi_three(1)(2)(3)
6
>>> multiadder(5)(1)(2)(3)(4)(5)
15
Run Code Online (Sandbox Code Playgroud)
必须通过填写空白来编写代码.
def multiadder(n):
assert n > 0
if _________________________ :
return _________________________
else:
return _________________________
Run Code Online (Sandbox Code Playgroud)
我们在课堂上讨论的主题是高阶函数,递归,lambdas和控制语句.我们不允许使用列表和集等数据结构,也不允许导入任何内容.
有人请帮忙.这是我无法测试的唯一问题!
在python中,如何编写一个采用多行的lambda函数.我试过了
d = lambda x: if x:
return 1
else
return 2
Run Code Online (Sandbox Code Playgroud)
但是我收到了错误......
由于Python使用翼片间隔,以指示范围(并且同样地,不具有end
的}
符号),是否限制的语言以任何方式从具有特定功能?
注意:我不是在谈论编码风格的个人偏好,我是在谈论真正的语言限制,因为没有end
声明的直接结果?
例如,它似乎通过后直接从圭有些不具有终止由于Python中缺乏多线兰巴年代end
/ }
符号?
如果是这样,那么由于这种语言设计决定使用缩进,还有哪些其他Python的limations?
更新:
请注意这个问题不是关于Lambda和技术上的问题,甚至不是Python本身.它是关于编程语言设计......当编程语言设计为具有缩进(而不是结束语句)时,编程语言具有哪些限制表示块范围.
python ×6
coding-style ×1
exec ×1
javascript ×1
jquery ×1
lambda ×1
python-2.7 ×1
python-3.x ×1
recursion ×1