Скажем, у меня есть:
a = ['the dog', 'cat', 'the frog went', '3452', 'empty', 'animal'] b = [0, 2, 4]
Как я могу вернуть:
c = ['the dog', 'the frog went', 'empty'] ?
т.е. как я могу вернуть n-й элемент из a, где n содержится в отдельном списке
Другой вариант, списки повторяются вместо a вместо (менее эффективны):
a
[ e for i, e in enumerate(a) if i in b ] #=> ['the dog', 'the frog went', 'empty']
O с lambda:
lambda
map( lambda x: a[x], b )
Другой способ:
map(a.__getitem__, b)
Еще одно решение: если вы хотите использовать numpy (import numpy as np), вы можете использовать его причудливую функцию индексации (как Matlab), то есть в одной строке:
import numpy as np
c = list(np.array(a)[b])
Используя понимание списка, просто сделайте:
c = [a[x] for x in b]