Python中不连续的数组切片

时间:2014-04-21 23:24:23

标签: python arrays slice

我想得到一个包含两个(或更多)不连续部分的数组切片。

示例:

>>> a=range(100)
>>> a[78:80; 85:97] # <= invalid syntax
[78, 79, 85, 86]

不接受该语法。最好的方法是什么?

更新:以上示例位于int,但我主要是喜欢这个来处理字符串。

示例:

>>> a="a b c d e f g".split()
>>> a[1:3; 4:6]
['b', 'c', 'e', 'f']

2 个答案:

答案 0 :(得分:4)

怎么样?
>>> a = range(100)
>>> a[78:80] + a[85:97]
[78, 79, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96]

更新:不确定您想要的字符串示例输出:

>>> import string
>>> a = list(string.lowercase[:7])
>>> a[1:3] + a[4:6]
['b', 'c', 'e', 'f']

答案 1 :(得分:1)

一个 替代 来回答sberry的答案(虽然我个人认为他的答案更好):也许你可以使用itemgetter

from operator import itemgetter

a="a b c d e f g".split()

>>> print itemgetter(*range(1,3)+range(4,6))(a)
['b', 'c', 'e', 'f']

<强> OR

from operator import itemgetter

a="a b c d e f g".split()

items = itemgetter(*range(1,3)+range(4,6))

>>> print items(a)
['b', 'c', 'e', 'f']