可能替换lambda以访问数组中的项目

时间:2014-07-21 17:55:58

标签: python

我想我在内置函数的另一天看到了一篇帖子:

def itemAt(index):
    def accessItem(item):
        return item[index]
    return accessItem

它用于像地图这样的东西。例如,要从列表列表中的每个列表中获取第一个元素,您可以执行以下操作:

map(itemAt(0), list_of_lists)

我可能只是想象事物,但是有一个内置函数可以做类似的事情,所以我可以避免使用lambda语法:

map(lambda x: x[0], list_of_lists)

正如我所说,这可能都是一个梦想,但我也“记得”看到这样的东西而不是指数。

1 个答案:

答案 0 :(得分:4)

您正在寻找operator.itemgetter()operator.attrgetter()的属性。

引用文档:

  

operator.attrgetter(attr)
  operator.attrgetter(*attrs)

     

返回一个可调用对象,该对象从其操作数中获取 attr 。如果请求了多个属性,则返回属性元组。属性名称也可以包含点。

     

[...]

     

operator.itemgetter(item)
  operator.itemgetter(*items)

     

返回一个可调用对象,该对象使用操作数的__getitem__()方法从其操作数中获取项。如果指定了多个项,则返回一个查找值元组。