0

我需要知道列表中的任何元素是否符合特定标准。为此,我想在 any() 函数中使用生成器表达式,但输出似乎行为不端:

>>> x
[0, 0, 0]
>>> gen = (z==1 for z in x)
>>> any(gen)
True

如果我改为使用列表,我会得到正确的答案:

>>> x
[0, 0, 0]
>>> com = [z==1 for z in x]
>>> any(com)
False

我已经在两台不同的 Windows 7 计算机上进行了尝试,一台使用 python 2.7.2,另一台使用 2.7.3。两者都返回错误的答案。我有人在他们有 python 2.7.5 的机器上试了一下,他得到了正确的答案。有人知道这里发生了什么吗?

4

2 回答 2

0

上面的语句在我的机器上返回了 Python 3.x 和 2.x 的正确答案,所以上面的原因一定是来自一些目前未知的其他因素,上面的评论试图从这个谜中找出一些东西。高效的做法是检查您的 Python 是否在没有任何第三方包的情况下运行干净,如果是,则可能将其剥离并以您的方式备份,直到找到问题包。

于 2014-06-22T21:14:48.160 回答
-2

您的第一个示例在 Python 3.4 中返回“False”。所以它看起来既合适又好,就像它应该的那样。

看起来像是旧 Python 版本中的一个错误,或者有些可能是在旧 Python 2 天的时候。

于 2014-06-22T21:00:23.640 回答