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

これを 2 つの異なる Windows 7 コンピューターで試しました。1 つは Python 2.7.2 で、もう 1 つは 2.7.3 です。どちらも間違った答えを返します。Python 2.7.5を搭載したマシンで誰かに試してもらい、正しい答えを得ました。ここで何が起こっているか知っている人はいますか?

4

2 に答える 2

-2

最初の例は、Python 3.4 で「False」を返します。そのため、本来あるべきように適切で見栄えがします。

古いPythonバージョンのバグのように見えるか、古いPython 2日間に意図されていた可能性があります。

于 2014-06-22T21:00:23.640 に答える