在Python 2中,viewvalues()/viewitems()与itervalues()/iteritems()之间的性能权衡是什么?
显然,在Python2.X中,在几乎所有实例中使用在Python 2中,viewvalues()/viewitems()与itervalues()/iteritems()之间的性能权衡是什么?,python,performance,python-2.7,Python,Performance,Python 2.7,显然,在Python2.X中,在几乎所有实例中使用值、项和键都是不好的做法,因为您将分配一个实际上不需要的额外列表。因此,在一段时间内,推荐的最佳实践是使用iteritems/itervalues,如果要枚举dict的键,则使用内置的\uuuuuuuuuuuu 在Python3的键、值和项作为Python2.7的视图键、视图值和视图项的后端口中,我想知道视图*函数系列与它们的iter*对应项相比,实际的性能权衡是什么。是继续使用针对Python2.6及更早版本的iter*函数的唯一原因,还是旧的
值
、项
和键
都是不好的做法,因为您将分配一个实际上不需要的额外列表。因此,在一段时间内,推荐的最佳实践是使用iteritems
/itervalues
,如果要枚举dict
的键,则使用内置的\uuuuuuuuuuuu
在Python3的
键
、值
和项
作为Python2.7的视图键
、视图值
和视图项
的后端口中,我想知道视图*
函数系列与它们的iter*
对应项相比,实际的性能权衡是什么。是继续使用针对Python2.6及更早版本的iter*
函数的唯一原因,还是旧的iter*
方法在某些上下文中比新的view*
方法更快?这里有一个解决iterkeys
与viewkeys
的答案:
总结(有一点背景):view*
方法是数据的实时视图(随着数据的更新而更新),而iter*
和纯*
更像快照
链接的回答者建议,虽然视图*
风格的方法也可能具有较小的性能优势,但与后端口可能存在兼容性问题,并建议继续在Python 2下使用iter*
/*
我的观点:如果你想要一个实时视图并且你在Python2下,使用view*
;如果您只想快速浏览一次键/值/项集,请使用iter*
;如果您想保留k/v/i的快照一段时间(或以某种非线性方式进行迭代),请使用*
。让性能下滑,直到您在内部循环中获得性能