列出樱桃采摘切片方法

Ara*_*ida 1 python list python-3.x

表达问题相当简单,但我不能 100% 确定我的行话是正确的。尽管如此,从概念上讲,“樱桃采摘”很适合描述我心目中的切片。这是因为我只是想访问(从所有元素中挑选)列表中两个相距较远的元素。我试过这个:

my_list[2,7]
Run Code Online (Sandbox Code Playgroud)

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

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

我搜索了这个错误,但我发现这实际上是一个非常普遍的错误,并且引发此错误的问题实际上都不是针对我的问题类型的。

我想我可以一次提取元素 1 然后合并它们,但我的直觉告诉我有一种更“ Pythonic ”的方式。

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

new_list = []
for i in range(len(my_list)):
    new_list.append(my_list[i][2,7])
Run Code Online (Sandbox Code Playgroud)

MSe*_*ert 5

通常我会用operator.itemgetter这个:

>>> my_list = list(range(10))
>>> import operator
>>> list(operator.itemgetter(2, 7)(my_list))
[2, 7]
Run Code Online (Sandbox Code Playgroud)

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


但是,您始终可以使用 NumPy (这是一个外部包),并且它是整数切片(但它不适用于普通 Python list,仅适用于 NumPy 数组):

>>> import numpy as np
>>> my_arr = np.array(my_list)
>>> my_arr[[2, 7]]
array([2, 7])
Run Code Online (Sandbox Code Playgroud)