gpt4 book ai didi

Python 2 列表理解和评估

转载 作者:太空狗 更新时间:2023-10-29 21:05:36 25 4
gpt4 key购买 nike

如何在列表理解或评估中使用多行语句?

我试图转换这段代码:

def f(x, y, b=''):
for i in x:
if i in y:
y.remove(i)
i *= 2
b += i
return b

像这样进入 lambda 函数:

j=lambda x,y:''.join(eval('y.remove(i);i*2')if i in y else i for i in x)

x 中都是一个字符串,例如 'onomatopoeia'y 是一个列表,例如 ['o', 'a','o'].

但由于某种原因,它返回一个语法错误。谁能解释一下?

最佳答案

首先,由于循环中的副作用,您可能不应该使用 lambda 重写它。如果您真的想要,请不要使用 eval。

我建议:

j = lambda x, y: ''.join((y.remove(i) or 2 * i) if i in y else i for i in x)

因为 remove 的结果是 Noneor 的第二个参数将是结果。这避免了评估。但它仍然比 for 循环更糟糕。


如对原始问题的评论所述,2 * y.pop(y.index(i))or 结构更具可读性。您将在 y 上循环两次,但性能似乎不是问题。

关于Python 2 列表理解和评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30986215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com