我可以切片像numpy的列表吗?

时间:2018-10-04 07:49:05

标签: python list numpy

如果我使用numpy,则可以如下分割数组:

import numpy as np

A = np.asarray([1, 2, 3, 4, 5])
print(A[np.asarray([1, 3])])

然后输出为[2 4]。 我想知道是否可以在不使用numpy的情况下执行相同的操作,当A只是列表时

2 个答案:

答案 0 :(得分:2)

不幸的是,你不能。您可以切片一个纯python列表。但是,这不是切片。如果您在列表上尝试使用

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

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

答案 1 :(得分:1)

使用列表理解,您只需键入几下即可完成此操作:

print([A[n] for n in [1, 3]])