我最近比较了处理速度[]和,list()并且惊讶地发现它的[]运行速度比它快三倍list().我跑了相同的测试与{}和dict(),结果几乎相同:[]和{}两个花了大约0.128sec /百万次,而list()和dict()大约花费每个0.428sec /万次.
为什么是这样?不要[]和{}(可能()和'',太)立即传回文字的一些空股票的份,而其明确命名同行(list(),dict(),tuple(),str())完全去创建一个对象,他们是否真的有元素?
我不知道这两种方法有何不同,但我很想知道.我无法在文档中或在SO上找到答案,搜索空括号结果比我预期的问题更多.
我拨打了我的时序结果timeit.timeit("[]")和timeit.timeit("list()"),和timeit.timeit("{}")和timeit.timeit("dict()"),分别比较列表和字典.我正在运行Python 2.7.9.
我最近发现的" 为什么是,如果真慢于如果为1? "来比较的性能if True来if 1,似乎触及了类似的文字,对全局的情况; 也许值得考虑一下.
我想创建一个可以容纳10个元素的空列表(或者是最好的方法).
之后我想在该列表中分配值,例如,这应该显示0到9:
s1 = list();
for i in range(0,9):
s1[i] = i
print s1
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此代码时,它会生成错误,或者在另一种情况下,它只显示[](空).
有人可以解释原因吗?
我正在尝试建立一个计数直方图...所以我创建了桶.我知道我可以通过并附加一堆零,即沿着这些方向的东西:
buckets = []
for i in xrange(0,100):
buckets.append(0)
Run Code Online (Sandbox Code Playgroud)
有更优雅的方式吗?我觉得应该有一种方法来声明一个特定大小的数组.
我知道numpy有,numpy.zeros但我想要更通用的解决方案
我找到了一种使列表填充相同文字的方法。
所以我做了以下事情:
my_list_of_dict = [{}] * 3
my_list_of_dict[0][0] = 1
my_list_of_dict[0][1] = 2
print(my_list_of_dict)
# What I thought : [{0: 1, 1: 2}, {}, {}]
# What actually happened : [{0: 1, 1: 2}, {0: 1, 1: 2}, {0: 1, 1: 2}]
Run Code Online (Sandbox Code Playgroud)
这是错误吗?或预期功能?
似乎python并不是每次都初始化新的dict,而是只是将给定的dict分配给列表。
另外,我该怎么办call(pronouce) [] * n?这是一种列表理解吗?