如何使用Python中的索引从列表中提取元素?

Ste*_*ini 32 python list

如果你在python中有一个列表,并希望将索引中的元素1,2和5提取到一个新列表中,你该怎么办?

这就是我做到的,但我不是很满意

>>> a
[10, 11, 12, 13, 14, 15]
>>> [x[1] for x in enumerate(a) if x[0] in [1,2,5]]
[11, 12, 15]
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?

更一般地说,给定一个带索引的元组,如何使用这个元组从列表中提取相应的元素,最终重复(例如元组(1,1,2,1,5)产生[11,11,12,11] ,15])

unu*_*tbu 72

也许用这个:

[a[i] for i in (1,2,5)]
# [11, 12, 15]
Run Code Online (Sandbox Code Playgroud)

  • 好的谢谢。这真是微不足道,很显然我太累了。 (2认同)

lug*_*098 6

我想你正在寻找这个:

elements = [10, 11, 12, 13, 14, 15]
indices = (1,1,2,1,5)

result_list = [elements[i] for i in indices]    
Run Code Online (Sandbox Code Playgroud)


Juh*_*nen 5

尝试

numbers = range(10, 16)
indices = (1, 1, 2, 1, 5)

result = [numbers[i] for i in indices]
Run Code Online (Sandbox Code Playgroud)


Dmi*_*tri 5

使用 Numpy 直接数组索引,如 MATLAB、Julia...

a = [10, 11, 12, 13, 14, 15];
s = [1, 2, 5] ;

import numpy as np
list(np.array(a)[s])
# [11, 12, 15]
Run Code Online (Sandbox Code Playgroud)

更好的是,继续使用 Numpy 数组

a = np.array([10, 11, 12, 13, 14, 15])
a[s]
#array([11, 12, 15])
Run Code Online (Sandbox Code Playgroud)