我在玩 timeit 并注意到对一个小字符串执行简单的列表理解比对一个小的单个字符串列表执行相同的操作花费更长的时间。有什么解释吗?这几乎是时间的 1.35 倍。
>>> from timeit import timeit
>>> timeit("[x for x in 'abc']")
2.0691067844831528
>>> timeit("[x for x in ['a', 'b', 'c']]")
1.5286479570345861
导致这种情况的较低级别发生了什么?
最佳答案
当您迭代大多数容器对象(列表、元组、字典……)时,迭代器会传递容器中的对象。
但是当你遍历一个字符串时,必须为每个传递的字符创建一个新对象——字符串不是“容器”,就像列表是容器一样。在迭代创建这些对象之前,字符串中的各个字符不作为不同的对象存在。
关于python - 为什么迭代一个小字符串比一个小列表慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23861468/