列出樱桃采摘切片方法

时间:2017-07-15 13:01:46

标签: python list python-3.x

表达问题相当简单,但我并非100%确定我的语言是正确的。尽管如此,从概念上来说,樱桃采摘"适合描述我想到的切片。这是因为我只想访问(从所有元素中挑选樱桃)列表中的两个远程元素。我试过这个:

my_list[2,7]

所以我期待它只返回2个元素,但我得到了错误:

  

列表索引必须是整数,而不是元组。

我搜索了这个错误,但我发现它实际上是一个非常普遍的错误,并且没有任何引发此错误的问题实际上是我的问题类型。

我想我可以一次提取元素1然后合并它们,但我的直觉告诉我还有更多的" pythonic "关于这个的方式。

我遇到的这个问题稍微复杂一点就是从现有的列表列表中构建一个新列表:

new_list = []
for i in range(len(my_list)):
    new_list.append(my_list[i][2,7])

2 个答案:

答案 0 :(得分:4)

通常我只会使用operator.itemgetter

>>> my_list = list(range(10))
>>> import operator
>>> list(operator.itemgetter(2, 7)(my_list))
[2, 7]

它还允许通过索引获取任意数量的列表元素。

但是你总是可以使用NumPy(这是一个外部软件包)和它的整数切片(但它不适用于普通的Python list,只是为了NumPy数组):

>>> import numpy as np
>>> my_arr = np.array(my_list)
>>> my_arr[[2, 7]]
array([2, 7])

答案 1 :(得分:1)

In [1]: myList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [2]: myList[2:8:5]
Out[2]: [2, 7]

myList[start:end:stride]

希望这会有所帮助。