2015-02-05 5 views
-2

Он говорит в основном B = [y | sqrt(y) in X], но когда я пишу его в Python, я получаю сообщение об ошибке. Я пробовал:Как вы пишете набор быстро таким образом?

b_set = set([y for y**0.5 in x_set]) 
b_set = set([y for math.sqrt(y) in x_set]) 

Ничего не работает.

+1

... где же "это" говорят, что? – Roberto

+0

И какая у вас ошибка? Вы имели в виду 'set ([y ** 0.5 для y в x_set])'? См. https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions – jonrsharpe

+0

Возможно, вам нужен ответ ниже, но, похоже, существует несоответствие с тем, что вы пробовали, и тем, что вы говорите, что хотите. '{y | sqrt (y) в X} 'фактически будет считаться как« набор чисел, квадратный корень которого находится в «X». Поэтому вам может понадобиться '{a ** 2 для a в X}'. –

ответ

3

Синтаксис понимания должен выглядеть как expression for identifier in collection. Кажется, вы поменяли позиции expression и identifier.

import math 
x_set = [1,4,9,16] 
b = {math.sqrt(y) for y in x_set} 
print b 

Результат:

set([1.0, 2.0, 3.0, 4.0]) 
+1

И, конечно, 'set (math.sqrt (y) для y в x_set)' будет работать тоже ... (на всякий случай OP застрял в древней «python2.6» земле) – mgilson

+0

Спасибо за помощь! – onurhb

Смежные вопросы