Ben*_*ner 38 python list slice
有没有更好的方法从python中的列表中提取任意索引?
我目前使用的方法是:
a = range(100)
s = [a[i] for i in [5,13,25]]
Run Code Online (Sandbox Code Playgroud)
其中a是我要切片的数组,[5,13,25]是我想要的元素.它似乎比Matlab等价物更冗长:
a = 0:99;
s = a([6,14,26])
Run Code Online (Sandbox Code Playgroud)
Joh*_*ooy 45
>>> from operator import itemgetter
>>> a = range(100)
>>> itemgetter(5,13,25)(a)
(5, 13, 25)
Run Code Online (Sandbox Code Playgroud)
unu*_*tbu 22
如果您是Matlab用户,但想要使用Python,请查看numpy:
In [37]: import numpy as np
In [38]: a = np.arange(100)
In [39]: s = a[[5,13,25]]
In [40]: s
Out[40]: array([ 5, 13, 25])
Run Code Online (Sandbox Code Playgroud)
这是NumPy和Matlab的比较,这是一个常见的Matlab命令及其在NumPy中的等价物表.
jsb*_*eno 11
没有"现成的"方式 - 你这样做的方式是非常自然的,你可以使用它.如果你的代码中有很多东西,你可能想要使用像matlabs一样使用语法的列表的子类 - 它可以在几行代码中完成,主要负担是你必须工作总是使用这个新类而不是内置列表.
class MyList(list):
def __getitem__(self, index):
if not isinstance(index, tuple):
return list.__getitem__(self, index)
return [self[i] for i in index]
Run Code Online (Sandbox Code Playgroud)
在控制台上:
>>> m = MyList(i * 3 for i in range(100))
>>> m[20, 25,60]
[60, 75, 180]
Run Code Online (Sandbox Code Playgroud)