Python Zen - (仅)一种方法

glg*_*lgl 10 python zen-of-python

这个问题可能听起来很主观,但正如"禅宗"所说的那样,(几乎总是)有一种方式可以优先考虑,最后不应该是主观的.

什么方式更好?

[i.something() for i in l]
map(operator.methodcaller('something'), l)
map(lambda x: x.something(), l)
Run Code Online (Sandbox Code Playgroud)

(1)是(IMO)非常清楚,但在很多答案中,map()都是使用的.如果我们这样做,(2)和(3)之间的可读性几乎相同(IMO,至少).

许多其他任务同样重要,但我选择了这个,因为它可以代表所有类似的任务.

Tim*_*ker 9

  • 简单比复杂更好.
  • 可读性很重要.

两者都是明确的论据[i.something() for i in l].

这假设.something()不会发生变异i,并且您使用的是Python 2.

  • @thefourtheye:以上都不是.在这种情况下,显式的`for`循环最好:`l:item.something()`中的item.使用列表推导或`map`s来表示副作用是很难看的. (5认同)