何时使用for loop和one-liner

时间:2017-04-09 14:12:09

标签: python for-loop

下面的示例中的单线程或者for循环之间的性能是否存在差异?这是我用来做代码的代码片段:

# convert to integer, subtract 1, and change to 0 if number is < 0
tile_ids =  map(lambda x: max(int(x)-1, 0), child[0].text.split(','))

这样做会更好,或写出来:

for tile_id in child[0].text.split(','):
    tile_id = int(tile_id) - 1
    if tile_id < 0:
        tile_id = 0

另外,是否有理由使用其中一个?

1 个答案:

答案 0 :(得分:1)

对于这种特定情况,使用map代替for循环,在性能方面不会获得太多收益。可能使用地图比后一种方法更糟糕,因为你隐含地使用&#34; extra-stuff&#34;在这种情况下,这不是很有用。

&#34;地图方法&#34;当您具有并行化任务的功能时,它会非常有用。在这种情况下,你肯定可以获得比普通for循环更好的性能。

由于可读性,我更喜欢第二个版本。另一种方法是使用列表理解:

title_ids = [max(int(x)-1,0) for x in child[0].text.split(',')]