2
>>> numbers = [34.6, -203.4, 44.9, 68.3, -12.2, 44.6, 12.7]
>>> newlist = []
>>> newlist = [newlist.append(number) for number in numbers if number > 0]
>>> newlist
[None, None, None, None, None]

newlistリスト変数には、上記のリスト番号のすべての正の値が含まれている必要があります。正しい答えが得られないようです。上記のコードの間違いを指摘してもらえますか? pythonの学習を始めたばかりです。私はpython 3.0を使用しています。

4

2 に答える 2

3

あなたはただする必要があります

newlist = [number for number in numbers if number > 0]

これにより、値が得られますnewlist

取得する理由[None, None, None, None, None]は、の戻り値の型がnewlist.append(number)None個々の要素をトラバースしながらリスト内包表記に追加されているためです。

デモ:

>>> a = []
>>> x = a.append(1)
>>> print x
None
>>> 

したがって、修正は次のとおりです。

>>> numbers = [34.6, -203.4, 44.9, 68.3, -12.2, 44.6, 12.7]
>>> newlist = [number for number in numbers if number > 0]
>>> newlist
[34.6, 44.9, 68.3, 44.6, 12.7]
>>> 
于 2013-06-28T01:52:14.743 に答える
1

list.append()を返すNoneので、得られる出力は期待どおりです。あなたのケースでリスト内包表記を行う方法は次のとおりです。

newlist = [i for i in numbers if i > 0]
于 2013-06-28T01:51:59.320 に答える