【问题标题】:Extract values from a list that have the same indices as the items of another list which are contained in a third list从列表中提取与包含在第三个列表中的另一个列表的项目具有相同索引的值
【发布时间】:2020-05-29 07:23:09
【问题描述】:

我想知道我是否可以在 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],x[4] 和 x[5] 的值。到目前为止,我已经尝试过:

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

【问题讨论】:

    标签: python python-3.x list for-loop set


    【解决方案1】:

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

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

    或使用您的部分set intersection 解决方案:

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

    【讨论】:

      猜你喜欢
      • 2019-09-11
      • 2019-12-21
      • 1970-01-01
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      • 2021-12-22
      相关资源
      最近更新 更多