Два значения в понимании списка - PullRequest
1 голос
/ 17 мая 2019

Я пытался понять этот список:

[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 ]

2 голосов
/ 17 мая 2019

У вас есть несколько вариантов:

[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 голос
/ 17 мая 2019

Вы можете использовать двойной цикл 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]
...