我尝试了此列表理解:
[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]
答案 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]