相关疑难解决方法(0)

是否有可能在python lambda表达式中有多个语句?

我是一个蟒蛇新手试图实现以下目标:

我有一份清单清单:

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中使用匿名块很容易)

python

96
推荐指数
8
解决办法
11万
查看次数

在Javascript中的字典理解,或对象`map`

我需要从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)

javascript python jquery

50
推荐指数
5
解决办法
2万
查看次数

Python 2和Python 3中exec函数的行为

下面的代码给出了不同的输出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而不执行此操作?我怎样才能实现Python2in 的行为Python3?我已经尝试将全局和本地的字典传递给exec函数Python3,但到目前为止还没有任何工作.

---编辑---

在阅读了Martijns的回答后,我进一步分析了这一点 …

python exec python-2.7 python-3.x

38
推荐指数
2
解决办法
3万
查看次数

Python递归挑战

我目前正在介绍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 recursion functional-programming

15
推荐指数
2
解决办法
1678
查看次数

如何用多行编写python lambda?

在python中,如何编写一个采用多行的lambda函数.我试过了

d = lambda x: if x:
                 return 1
              else 
                 return 2
Run Code Online (Sandbox Code Playgroud)

但是我收到了错误......

python lambda

13
推荐指数
2
解决办法
2万
查看次数

作为一种语言,由于没有结束语句,Python是否受限制?

由于Python使用翼片间隔,以指示范围(并且同样地,不具有end}符号),是否限制的语言以任何方式从具有特定功能?

注意:我不是在谈论编码风格的个人偏好,我是在谈论真正的语言限制,因为没有end声明的直接结果?

例如,它似乎通过后直接从圭有些不具有终止由于Python中缺乏多线兰巴年代end/ }符号?

如果是这样,那么由于这种语言设计决定使用缩进,还有哪些其他Python的limations?


更新:

请注意这个问题不是关于Lambda和技术上的问题,甚至不是Python本身.它是关于编程语言设计......当编程语言设计为具有缩进(而不是结束语句)时,编程语言具有哪些限制表示块范围.

python coding-style

6
推荐指数
1
解决办法
1161
查看次数