3 回答

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
這種方法的可讀性不如其他給出的答案,但如果您的列表很長(zhǎng),它會(huì)更快。
wanted_output = []
for item in list1:
try:
wanted_output.append(list2.index(item))
except ValueError: # item not in list2
continue

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
長(zhǎng)列表最有效的解決方案是預(yù)處理第二個(gè)列表并將其轉(zhuǎn)換為字典,其中列表項(xiàng)是鍵,它們的位置是值。然后在該字典中查找第一個(gè)列表中的元素:
positions = {item: pos for pos, item in enumerate(list2)}
[positions[item] for item in list1]
#[3, 4, 5, 2, 1, 6, 7, 8, 9]

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
list1 = [53, 65, 67, 37, 14, 98, 122, 124, 183]
list2 = [0, 14, 37, 53, 65, 67, 98, 122, 124, 183, 199]
[list2.index(x) for x in list1 if x in list2]
Output:
[3, 4, 5, 2, 1, 6, 7, 8, 9]
添加回答
舉報(bào)