2013-03-09 125 views
1

我看看它看起來像清單零以下:識別列表蟒蛇itertools

yyy=[(2.0, 3.4, 3.75), (2.0, 3.4, 0.0), (2.0, 3.4, 0.0), (2.0, 3.4, 3.5), (2.0, 3.4, 0.0)] 

我想要做的是確定是否0.0表示存在於任何的子表(true或false) 。所以,我遵循itertools,但我不確定如何構建邏輯。

from itertools import * 
selectors = [x is 0 for x in yyy] 
#[False, False, False, False, False] 

顯然,我的上面的sytax看起來不正確 - 我想知道是否有人可以指出我的正確方向的語法。

回答

5

嘗試[0.0 in x for x in yyy]

>>> yyy=[(2.0, 3.4, 3.75), (2.0, 3.4, 0.0), (2.0, 3.4, 0.0), (2.0, 3.4, 3.5), (2.0, 3.4, 0.0)] 
>>> [0.0 in x for x in yyy] 
[False, True, True, False, True] 
>>> 

你接近。

+0

嗨埃裏克:謝謝..這看起來很整潔 – AJW 2013-03-09 20:19:18

+0

它是否重要,如果它是0或0.0或0.00?只是想知道 – AJW 2013-03-09 20:19:40

+0

應該沒關係。在Python 2.7中,0.0對我來說等於0。 – 2013-03-09 20:22:13

1

怎麼樣只是:

any(0.0 in subtup for subtup in yyy) 

演示:

>>> yyy=[(2.0, 3.4, 3.75), (2.0, 3.4, 0.0), (2.0, 3.4, 0.0), (2.0, 3.4, 3.5), (2.0, 3.4, 0.0)] 
>>> any(0.0 in subtup for subtup in yyy) 
True 
>>> yyy=[(2.0, 3.4, 3.75), (2.0, 3.4, 10.0), (2.0, 3.4, 10.0), (2.0, 3.4, 3.5), (2.0, 3.4,10.0)] 
>>> any(0.0 in subtup for subtup in yyy) 
False 
+0

感謝你 - 但它給了我一個布爾值而不是列表.. :( – AJW 2013-03-09 20:24:53

+0

@JamesW - 對不起,我想我誤解了這句話:「我想要做的是確定是否存在0.0 「 – mgilson 2013-03-09 20:32:21

+0

對不起 - 這是我的錯..應該更清楚一點.. – AJW 2013-03-09 20:33:58