在Python中循环遍历列表

2024-04-26 22:31:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,里面有子列表。我想打印所有长度等于3的子列表。

我在python中执行以下操作:

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

values是原始列表。上面的代码是否为每个x值打印长度等于3的所有子列表?我想显示子列表,其中length==3只显示一次。

问题解决了。问题在于Eclipse编辑器。我不明白原因,但当我运行循环时,它只显示了列表的一半。

在Eclipse中有需要更改的设置吗?


Tags: 代码in列表forlenif原因编辑器
3条回答

您也可以使用for x in values,而不是for x in values[:];后者会生成不必要的副本。当然,代码检查的长度是2而不是3。。。

代码每值x只打印一个项,而xvalues的元素上迭代,这些元素是子列表。所以它只打印每个子列表一次。

试试这个

x in mylistx 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]]
>>>

这是我一直在寻找的解决方案。如果要创建包含List1中number元素差异的List2。

list1 = [12, 15, 22, 54, 21, 68, 9, 73, 81, 34, 45]
list2 = []
for i in range(1, len(list1)):
  change = list1[i] - list1[i-1]
  list2.append(change)

请注意,虽然len(list1)是11(元素),但len(list2)将仅是10个元素,因为我们正在使用list1中的索引1启动for循环,而不是使用list1中的索引0启动for循环

相关问题 更多 >