【发布时间】:2020-05-12 21:59:25
【问题描述】:
我在 python 列表lst 中有一堆 numpy 数组。例如,我可以通过使用[:, 1] 对其进行索引来分割其中一个数组以获得特定视图。
我需要将此切片操作应用于lst 中的所有 numpy 数组。使用生成器理解,我可以这样做:
(my_array[:, 1] for my_array in lst)
我想知道是否有办法用operator.itemgetter 和map 完成同样的事情。
map(operator.itemgetter(:, 1), lst) 毫无疑问会导致语法错误。
【问题讨论】:
-
为什么?我的印象是
map和list comprehension的速度差不多。我发现理解更易读。 -
@hpaulj 我喜欢使用
map/filter过度理解的原因是1)避免命名局部变量和2)为了简洁(特别是当我有像itemgetter这样的方法时和attrgetter导入本地命名空间)。 -
itemgetter是一个具有可读 python 代码的类。如文档所述,它主要被设计为对列表进行“高级索引”的一种方式,用列表索引列表(数组已经允许这样做)。