簡體   English   中英

從列表中提取與包含在第三個列表中的另一個列表的項具有相同索引的值

[英]Extract values from a list that have the same indices as the items of another list which are contained in a third list

我想知道我是否可以在 2 個列表中識別相似值的位置,並使用在第三個列表中識別值的位置。

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]、x[4] 和 x[5] 的值。 到目前為止,我已經嘗試過:

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

您可以為此使用列表理解:

>>> 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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM