【发布时间】:2019-10-27 16:16:16
【问题描述】:
我只想在 python lambda 函数中使用 Javascript comma operator,现在我知道 ()[-1] 适合我。
计算其每个操作数(从左到右)并返回最后一个操作数的值。
在python中
# ignore List comprehension
# [ele['val'] for ele in arr ]
from functools import reduce
arr = [{'id': 1, 'val': 100}, {'id': 2, 'val': 200}]
#
# use tuple ()[-1] result [100, 200]
result = reduce(lambda total, ele: (total.append(ele['val']), total)[-1], arr, [])
# use list[][-1] result [100, 200]
result = reduce(lambda total, ele: [total.append(ele['val']), total][-1], arr, [])
result1 = reduce(lambda total, ele: total if total.append(ele['val']) else total, arr, [])
# [100, 200]
在 Javascript 中:
// ignore map [{'id': 1, 'val': 100}, {'id': 2, 'val': 200}].map(e=>e.val)
[{'id': 1, 'val': 100}, {'id': 2, 'val': 200}].reduce((total, ele) => (total.push(ele.val), total), [])
// [100, 200]
【问题讨论】:
-
python 和 javascript 有不同的语法,为什么你认为它们是一样的?还有你的预期输出和输入是什么
-
在 Javascript 中,逗号可以做到这一点。在法语中,“疼痛”的意思是“面包”。这并不意味着您可以在美国的杂货店要求痛苦并期望得到面包,或者您可以在 Python 中使用逗号并期望得到 Javascript 行为。
-
@user2357112 如果我要求疼痛,我希望得到一个指关节三明治,该死!
-
那么,你真正想要的是一个可以在 lambda 中工作的单行表达式吗?
标签: javascript python lambda comma-operator