Извлечение значений из списка, которые имеют те же индексы, что и элементы другого списка, которые содержатся в третьем списке - PullRequest
2 голосов
/ 13 февраля 2020

Я хотел бы знать, могу ли я определить положение схожих значений в 2 списках и использовать положение, идентифицированное значение в 3-м списке.

v= [100,200,300,400,500,600,700,800,900,1000,1100]
x= [67,56,89,21,90,54,38,93,46,17,75]
j= [200,500,600]

Я хочу, чтобы код идентифицировал это значение j можно найти в v [1], v [4] и v [5], и использовать позиции v [1], v [4] и v [5] для получения / возврата значения x [1] , х [4] и х [5]. До сих пор я пробовал:

h = set(v)&set(j) 
print(h)

1 Ответ

5 голосов
/ 13 февраля 2020

Вы можете использовать списочное понимание для этого:

>>> v= [100,200,300,400,500,600,700,800,900,1000,1100]
>>> x= [67,56,89,21,90,54,38,93,46,17,75]
>>> j= [200,500,600]
>>> [x[i] for i, v_ele in enumerate(v) if v_ele in j]
[56, 90, 54]

Или использовать частичное установить пересечение решение:

>>> [x[v.index(i)] for i in set(v)&set(j)]
[56, 54, 90]

Обратите внимание, что это не поддерживать порядок, так как наборы изначально неупорядочены. Чтобы исправить это, мы можем отсортировать с ключом как x.index:

>>> sorted([56, 54, 90], key=x.index)
[56, 90, 54]
...