下面的示例中的单线程或者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
另外,是否有理由使用其中一个?
答案 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(',')]