wim*_*wim 7 python string performance coding-style list
获得最长单词长度的pythonic方法是什么:
len(max(words, key=len))
要么:
max(len(w) for w in words)
或者是其他东西? words是一个字符串列表.我发现我需要经常这样做,并且在使用几个不同的样本大小计时之后,第一种方式似乎始终更快,尽管看起来表面效率较低(len被调用两次的冗余看起来并不重要 - 更多发生在这种形式的C代码?).
虽然:
max(len(w) for w in words)
Run Code Online (Sandbox Code Playgroud)
有点"阅读"更容易 - 你有一个发电机的开销.
而:
len(max(words, key=len))
Run Code Online (Sandbox Code Playgroud)
使用内置函数可以使用密钥进行优化,因为len对于字符串来说通常是非常有效的操作,会更快...
我认为两者都可以,但我认为除非速度是max(len(w) for w in words)最具可读性的考虑因素.
当我看着它们的时候,花了我更长的时间来弄清楚到底len(max(words, key=len))在做什么,而且在我想到它之前我还是错了.代码应该立即显而易见,除非有充分的理由不这样做.
从其他帖子(以及我自己的测试)中可以清楚地看出,可读性较差的帖子更快.但这并不像他们中的任何一个都是狗慢.除非代码处于关键路径,否则不值得担心.
最终,我认为更具可读性更多是Pythonic.
顺便说一句,这是为数不多的几个案例,其中Python 2在同一任务中明显比Python 3快.
| 归档时间: |
|
| 查看次数: |
11650 次 |
| 最近记录: |