如果我有一个例子列表
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]
感谢
答案 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]