2012-02-04 168 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]] 
>>>