据我了解,"".join(iterable_of_strings)是连接字符串的首选方式,因为它允许进行优化,避免不必要地将不可变对象重写到内存中多次。
对于适度大量的操作,表达式中添加字符串比使用.join()方法可靠地运行得更快。
在我的笔记本电脑上,使用Python 3.3运行此代码,我得到的联接时间约为2.9-3.2秒,而添加时间为2.3-2.7秒。我在谷歌上找不到一个好答案。能否有人解释一下可能发生了什么或者指导我到一个好资源?
对于适度大量的操作,表达式中添加字符串比使用.join()方法可靠地运行得更快。
在我的笔记本电脑上,使用Python 3.3运行此代码,我得到的联接时间约为2.9-3.2秒,而添加时间为2.3-2.7秒。我在谷歌上找不到一个好答案。能否有人解释一下可能发生了什么或者指导我到一个好资源?
import uuid
import time
class mock:
def __init__(self):
self.name = "foo"
self.address = "address"
self.age = "age"
self.primarykey = uuid.uuid4()
data_list = [mock() for x in range(2000000)]
def added():
my_dict_list = {}
t = time.time()
new_dict = { item.primarykey: item.name + item.address + item.age for item in data_list }
print(time.time() - t)
def joined():
my_dict_list = {}
t = time.time()
new_dict = { item.primarykey: ''.join([item.name, item.address, item.age]) for item in data_list }
print(time.time() - t)
joined()
added()