2015-02-05 54 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