Python 我可以像numpy一样分割列表吗?

Python 我可以像numpy一样分割列表吗?,python,list,numpy,Python,List,Numpy,如果使用numpy,则可以按如下方式切片数组: import numpy as np A = np.asarray([1, 2, 3, 4, 5]) print(A[np.asarray([1, 3])]) 然后输出为[2 4]。 我想知道,如果A只是一个列表,我是否可以不使用numpy执行相同的操作。您只需再键入一点即可,使用列表理解: 不幸的是,你不能。您可以分割一个纯python列表。然而,这不是切片。如果你在列表上尝试,你会得到 TypeError: list indices mus

如果使用numpy,则可以按如下方式切片数组:

import numpy as np

A = np.asarray([1, 2, 3, 4, 5])
print(A[np.asarray([1, 3])])
然后输出为[2 4]。
我想知道,如果A只是一个列表,我是否可以不使用numpy执行相同的操作。

您只需再键入一点即可,使用列表理解:


不幸的是,你不能。您可以分割一个纯python列表。然而,这不是切片。如果你在列表上尝试,你会得到

TypeError: list indices must be integers or slices, not list

numpy数组支持这一点,因为它们具有不同的_get__方法实现。对此您无能为力,除了自己对list类进行子类化之外(实际上您不应该这样做),numpy实现针对此类操作进行了优化。

。。。。A[[1,3]]?@Divakar抱歉误会了。我编辑这个问题是为了说明A是一个列表。例如,列表理解很快,比逐个向列表中添加元素要快得多。到底是使用numpy还是普通列表,这实际上取决于您的用例,而不是语法的这一个细节。你们需要自己来衡量表现,并没有笼统的答案。@alexis我不会说快很多,但稍微快一点。不是像numpy数组那样快几个数量级,我认为这意味着如果可以使用numpy,它通常会比python列表快。这就是numpy的全部目的。把numpy放在一边,你确定@juanpa?根据我的经验,在列表a:list_b.appendx中,像x这样的循环比理解稍微慢一点。我的意思是:在不到numpy的情况下,你仍然使用相同的时间单位。你在列表中所做的事情越复杂,差异就会急剧缩小。本质上,列表理解优化了附加。
TypeError: list indices must be integers or slices, not list