对于列表切片,我可以想象(虽然我可能完全不在……)代码是这样的:实例化一个大小为range_end-range_start的列表,并将原始列表中的值输入到新创建的数组中。在
元组切片是如何工作的?因为元组是不可变的,所以我们不能潜在地实例化一个大小为range-end-range-start的元组并更新这些值。在
我试过几个测试,结果发现元组切片和列表切片的平均性能相似:
import time
_max = 10000000
_list = range(_max)
_tuple = tuple(_list)
mid = _max // 2
i = 10000
while i <= _max:
print 'for', i, ' elements :'
s = mid - half
e = mid + half - 1
# list slice
start = time.clock()
lSlice = _list[s:e]
end = time.clock()
print 'list slice took:', end - start
# tuple slice
start = time.clock()
tSlice = _tuple[s:e]
end = time.clock()
print 'tuple slice took:', end - start
i *= 10
结果是:
^{pr2}$有谁能告诉我元组切片程序是如何工作的吗?在
编辑:我注意到我对切片的起点和终点的设置很荒谬,所以我更新了代码片段。在
不能在Python级别,但在底层C实现和that's how it's done中是完全可能的。这就是任何元组如何填充其值,无论是通过切片、
tuple
构造函数、(a, b, c)
语法或其他任何方法。在相关问题 更多 >
编程相关推荐