2012-02-04 231 views
61

我有一個包含子列表的列表。我想所有的長度等於子列表打印到3循環遍歷Python中的列表

我做在python以下幾點:

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

「值」是原來的列表中。上面的代碼是否爲x的每個值打印長度等於3的所有子列表?我想只顯示一次length==3的子列表。

問題解決了。問題在於eclipse編輯器。我不明白原因,但是當我運行我的循環時,它只顯示我列表的一半。

是否有任何設置,我必須改變日食?

+2

爲什麼你在代碼中以2比長度,然後? – kennytm 2012-02-04 03:21:53

+0

你能做'打印值'並在這裏顯示輸出嗎? *編輯:*或只是檢查它不是空白。 – FakeRainBrigand 2012-02-04 03:22:29

回答

5

你也可以使用for x in values而不是for x in values[:];後者造成不必要的副本。另外,當然該代碼檢查的2而不是3的長度...

代碼只打印每x值一個項目 - 和x被遍歷的values的元素,它們是子列表。所以它只會打印每個子列表一次。

+4

values [:]切出所有值的元素,對嗎?我假設你是指從切片創建的臨時列表。只是想確定。 – batbrat 2012-02-04 03:30:15

88

試試這個,

x in mylist更好,比x in mylist[:]更具可讀性和你len(x)應該等於3

>>> 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] 

,或者如果你需要更多的Python的使用list-comprehensions

>>> [x for x in mylist if len(x)==3] 
[[1, 2, 3], [8, 9, 10]] 
>>>