4 回答

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
你可以使用operator.itemgetter:
from operator import itemgetter
a = [-2, 1, 5, 3, 8, 5, 6]
b = [1, 2, 5]
print(itemgetter(*b)(a))
# Result:
(1, 5, 5)
或者你可以使用numpy:
import numpy as np
a = np.array([-2, 1, 5, 3, 8, 5, 6])
b = [1, 2, 5]
print(list(a[b]))
# Result:
[1, 5, 5]
但實(shí)際上,您當(dāng)前的解決方案很好。它可能是所有這些中最好的。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
備擇方案:
>>> map(a.__getitem__, b)
[1, 5, 5]
>>> import operator
>>> operator.itemgetter(*b)(a)
(1, 5, 5)

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
另一種解決方案可能是通過(guò)熊貓系列:
import pandas as pd
a = pd.Series([-2, 1, 5, 3, 8, 5, 6])
b = [1, 2, 5]
c = a[b]
然后,您可以根據(jù)需要將c轉(zhuǎn)換回列表:
c = list(c)
添加回答
舉報(bào)