2013-03-09 128 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