【问题标题】:Python nested lists join lookup reference listPython 嵌套列表加入查找参考列表
【发布时间】:2016-03-04 00:56:39
【问题描述】:

python新手,如果这是微不足道的,请道歉。 我有一个清单

list = [3,1,0,2]

和嵌套查找

lookup = [[265,301,201],[225,302,191],[225,35,134],[28,82,158]]

我需要将“list”中的每个元素与“lookup”中的每个相应元素索引进行匹配,并从“lookup”中返回该元素的值。 结果应该是:

result = [
[28,82,158],
[225,302,191],
[265,301,201],
[225,35,134]
]

【问题讨论】:

    标签: python list nested


    【解决方案1】:

    您可以使用列表推导:

    result = [lookup[i] for i in list]
    

    (请注意,您不应调用变量list。它会影响同名的内置函数,并且迟早会导致意外行为。)

    【讨论】:

      【解决方案2】:

      一个普通的list comp 和索引:

      lst = [3,1,0,2]
      
      print([lookup[i] for i in lst])
      [[28, 82, 158], [225, 302, 191], [265, 301, 201], [225, 35, 134]]
      

      或者使用__getitem__的函数式方法:

      lst = [3,1,0,2]
      
      
      lookup = [[265,301,201],[225,302,191],[225,35,134],[28,82,158]]
      
      print(list(map(lookup.__getitem__, lst)))
      
      [[28, 82, 158], [225, 302, 191], [265, 301, 201], [225, 35, 134]]
      

      使用operator.itemgetter:

      lst = [3,1,0,2]
      
      
      lookup = [[265,301,201],[225,302,191],[225,35,134],[28,82,158]]
      from operator import itemgetter
      
      print(list(itemgetter(*lst)(lookup)))
       [[28, 82, 158], [225, 302, 191], [265, 301, 201], [225, 35, 134]]
      

      【讨论】:

        【解决方案3】:

        你也可以使用 map 和 lambda:

        >>> lst = [3, 1, 0, 2]
        >>> lookup = [[265,301,201],[225,302,191],[225,35,134],[28,82,158]]
        >>> map(lambda x:lookup[x], lst)
        [[28, 82, 158], [225, 302, 191], [265, 301, 201], [225, 35, 134]]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-17
          • 2014-12-13
          • 1970-01-01
          • 2021-12-31
          • 2019-03-02
          • 1970-01-01
          相关资源
          最近更新 更多