2024-04-26 22:31:02 发布
网友
我有一个列表,里面有子列表。我想打印所有长度等于3的子列表。
我在python中执行以下操作:
for x in values[:]: if len(x)==3: print x
values是原始列表。上面的代码是否为每个x值打印长度等于3的所有子列表?我想显示子列表,其中length==3只显示一次。
values
x
length==3
问题解决了。问题在于Eclipse编辑器。我不明白原因,但当我运行循环时,它只显示了列表的一半。
在Eclipse中有需要更改的设置吗?
您也可以使用for x in values,而不是for x in values[:];后者会生成不必要的副本。当然,代码检查的长度是2而不是3。。。
for x in values
for x in values[:]
代码每值x只打印一个项,而x在values的元素上迭代,这些元素是子列表。所以它只打印每个子列表一次。
试试这个
x in mylist比x in mylist[:]更好,可读性更强,您的len(x)应该等于3。
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]] >>>
这是我一直在寻找的解决方案。如果要创建包含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循环
len(list1)
len(list2)
您也可以使用
for x in values
,而不是for x in values[:]
;后者会生成不必要的副本。当然,代码检查的长度是2而不是3。。。代码每值
x
只打印一个项,而x
在values
的元素上迭代,这些元素是子列表。所以它只打印每个子列表一次。试试这个
x in mylist
比x in mylist[:]
更好,可读性更强,您的len(x)
应该等于3
。或者如果你需要更多的Python使用list-comprehensions
这是我一直在寻找的解决方案。如果要创建包含List1中number元素差异的List2。
请注意,虽然
len(list1)
是11(元素),但len(list2)
将仅是10个元素,因为我们正在使用list1中的索引1启动for循环,而不是使用list1中的索引0启动for循环相关问题 更多 >
编程相关推荐