【发布时间】:2021-11-29 17:43:19
【问题描述】:
我想使用 Python 中的函数式编程,使用规则 x if x odd; (x*2, x*3) if x is even 将列表转换为字典。
例如list([1, 2, 3]) 到dict({1:1, 4:2, 6:2, 3:3})
我有一个将列表转换为{1: 1, (4, 2): (6, 2), 3: 3}的代码
from itertools import chain
print(
dict(
map(
lambda elem:
(lambda x: (x, x))(elem) if elem % 2 == 1
else (lambda x: chain(
((x*2, x), (x*3, x))
))(elem),
list([1, 2, 3])
)
)
)
有谁知道吗?
结果应该和这段代码产生的一样
d = dict()
for x in [1, 2, 3]:
if x % 2 == 1:
d[x] = x
else:
d[x*2] = x
d[x*3] = x
【问题讨论】:
-
你对“函数式编程”的标准是什么?例如,是否允许理解? Haskell 有这些……
-
我在比赛中有一个 linter,除了 lambda 之外不允许使用任何东西
-
那么约束不仅仅是函数式编程......
标签: python-3.x list dictionary lambda functional-programming