2015-02-05 90 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 2015-02-05 20:05:16

+0

你会得到什么错误?你是不是指'set([x_set中的y ** 0.5])?见例如https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions – jonrsharpe 2015-02-05 20:06:10

+0

您可能想要下面的答案,但似乎与您尝试的内容和您说的内容不符。 '{y | X中的sqrt(y)}实际上被读作“其平方根在'X'中的一组数字”。所以你可能需要'{a ** 2 for a in X}'。 – 2015-02-05 20:13:44

回答

3

理解语法应该看起来像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]) 
+1

当然,'set(math.sqrt(y)for y in x_set)'也会起作用......(以防OP被卡在古代的“python2.6”land中) – mgilson 2015-02-05 20:08:50

+0

感谢您的帮助! – onurhb 2015-02-05 21:25:57