你怎么用这种方式快速写一个集合?

How do you write a set quickly this way?

基本上说的是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])

都不行。

理解语法应该类似于 expression for identifier in collection。你好像调换了 expressionidentifier.

的位置
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])