2012-02-04 11 views
61

私はそこにサブリストのリストを持っています。Pythonのリストをループする

for x in values[:]: 
    if len(x)==3: 
     print x 

「値は、」元のリストである:私は、私はPythonで次の操作を行っています。3.

と同じ長さのすべてのサブリストを印刷したいです。上記のコードは、xの各値に対して長さ3のすべてのサブリストを出力しますか?私はサブリストを表示したいと思います。length==3は一度だけです。

問題が解決しました。問題はeclipseエディタにあります。私はその理由を理解していませんが、ループを実行するとリストの半分しか表示されません。

私はeclipseで変更する必要がある設定はありますか?

+2

! – kennytm

+0

'print values'を実行して、ここに出力を表示できますか? *編集:*または空白でないことを確認してください。 – FakeRainBrigand

答えて

5

あなたにもfor x in valuesではなくfor x in values[:]使用することができます。後者は不要なコピーを作成します。また、もちろん2のではなく、3の長さをコードチェック...

コードのみxの値ごとに1つのアイテムを印刷する - とxサブリストである、valuesの要素を反復します。したがって、各サブリストは1回だけ印刷されます。

+4

値[:]は値のすべての要素をスライスします。私はあなたがスライスから作成された一時的なリストを意味していたと仮定しています。ただ確実にしたい。 – batbrat

88

x in mylistx in mylist[:]より良く、より読みやすいですし、あなたのlen(x)3と同じである必要があり、これを試してみてください。あなたは、コードに2と長さを比較するのはなぜ

>>> mylist = [[1,2,3],[4,5,6,7],[8,9,10]] 
>>> for x in mylist: 
...  if len(x)==3: 
...  print x 
... 
[1, 2, 3] 
[8, 9, 10] 

またはあなたがより多くのニシキヘビを使用する必要がある場合list-comprehensions

>>> [x for x in mylist if len(x)==3] 
[[1, 2, 3], [8, 9, 10]] 
>>> 
関連する問題