如何使用不连续索引在python中形成一个新列表?

时间:2013-11-16 06:46:16

标签: python list python-3.x

如果我有一个例子列表

A = [0.54,13,18,0,1,1,1,1,0,0,0,1,0]

我希望A[0:1]A[3:]形成

[0.54, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0]

我知道如果我想要列表中的连续片段,我可以通过list[start:end]

来完成

但如果我想在列表中使用多个索引范围但这些段不连续,我可以使用

list[ ? ]要实现吗?

似乎我可以通过A[range1] + A[range2]

来做

感谢

3 个答案:

答案 0 :(得分:7)

您可以使用列表理解来实现此目的。

A = [0.54,13,18,0,1,1,1,1,0,0,0,1,0]
ranges = [(1, 3), (5, 8), (11, 14)]
print ([item for start, end in ranges for item in A[start:end]])

<强>输出

[13, 18, 1, 1, 1, 1, 0]

答案 1 :(得分:4)

itertools可能有帮助

from itertools import chain
A = [0.54,13,18,0,1,1,1,1,0,0,0,1,0]
list(chain(A[1:4], A[5:7], A[8:10]))
[13, 18, 0, 1, 1, 0, 0]

答案 2 :(得分:2)

足够简单......你已经这样做了。任何其他东西只会增加不必要的毛病。不确定是否有任何性能提升。

>>> A[2:4] + A[7:9]
[18, 0, 1, 0]

只获得一个项目...将一个项目拼接到一个列表中。

>>> A[2:4] + A[7:9] + A[3:3]
[18, 0, 1, 0]