使用步进从多个子列表中提取第二个元素

时间:2015-10-27 02:54:27

标签: python list slice

最初我有一个坐标列表,用于绘制一个' zig-zag'形式上的模式:

[10,10,20,20,30,10,40,20]

我想检查所有' top' y坐标的值是相同的,以便模式可以工作。我通过以下方式提取它们:

a_vals = coords[1::4]

这给了我一个新的列表,我正在寻找10个所有元素。我也重复这个以检查后面的每个第二个坐标是否为20的y部分。

但是,现在坐标已被拆分为子列表,我仍然需要将它们全部提取到一个新列表中(所有值都是10,然后是20,以便以后检查):

[[10,10],[20,20],[30,10],[40,20]]

从我收集到的内容中,应该可以对其进行分割,但我不太确定如何使用所涉及的子列表,请记住它必须步入下一个子列表来提取值。

2 个答案:

答案 0 :(得分:1)

您可以使用列表理解以及切片列表 -

a_vals = [y for x,y in coords[::2]]

这将获得所有 top 坐标y值,对于其他y值,您只需将上面的切片更改为coords[1::2]

演示 -

>>> coords = [[10,10],[20,20],[30,10],[40,20]]
>>> a_vals = [y for x,y in coords[::2]]
>>> a_vals
[10, 10]
>>> b_vals = [y for x,y in coords[1::2]]
>>> b_vals
[20, 20]

答案 1 :(得分:0)

>>> L = [10,10,20,20,30,10,40,20] 
>>> L1 = [x for x in L[::2]] # First Elements
>>> L1
[10, 20, 30, 40]
>>> L2 = [x for x in L[1::2]] # Second Elements
>>> L2
[10, 20, 10, 20]
>>> [[x, y] for x, y in zip(L1, L2)] # Group Them
[[10, 10], [20, 20], [30, 10], [40, 20]]