列表理解中的两个值

时间:2019-05-16 23:28:48

标签: python list-comprehension

我尝试了此列表理解:

[sqrt(x), x**2 for x in range(rng)]

,但显然此语法不起作用。我想我可以做这样的事情:

[fn(x), fn(x) for x in range(rng) for fn in (sqrt(), lambda x: x**2)]

但是没有更清洁的方法吗?

编辑:假设rng是3。我希望输出[0, 0, 1, 1, √2, 4]

2 个答案:

答案 0 :(得分:2)

您有几种选择:

[fx for x in range(rng) for fx in [sqrt(x), x**2]]

或:

list(itertools.chain.from_iterable([sqrt(x), x**2] for x in range(rng)))

答案 1 :(得分:1)

您可以使用double for循环:

from math import sqrt
rng = 3
print([item for x in range(rng) for item in (sqrt(x), x**2)])
# [0.0, 0, 1.0, 1, 1.4142135623730951, 4]