python map对象方法

Fer*_*uzz 4 python

我循环遍历一个对象数组,在每个对象上调用一个方法,如下所示:

for cell in cells:
    cell.update_type(next_cells[cell.index])
Run Code Online (Sandbox Code Playgroud)

有没有办法用map()做等效的?

agf*_*agf 9

它似乎update_type返回None,所以你可以使用:

any(cell.update_type(next_cells[cell.index]) for cell in cells)
Run Code Online (Sandbox Code Playgroud)

但除非正常循环出现问题,否则坚持下去.它是最具可读性的,你不应该过早优化.

不应该map在这里使用因为没有办法避免在Python函数/ lambda表达式上使用它,所以你不会比普通循环获得速度优势.

不应该使用列表推导,因为update_type即使你忽略它们,你也会不必要地累积一个返回值列表- any而是使用它.

  • @agf:如果`next_cells`是一个Python列表,对`list .__ getitem__`的显式调用会减慢速度而不是加速它们.如果你不相信我,请自己计时.:) (2认同)