假设我有两个名为a和b的大小为n的列表,我想在k <n时执行以下切片设置操作
a[:k] = b[:k]
Run Code Online (Sandbox Code Playgroud)
在Python wiki的Time Complexity页面中,它表示切片设置的复杂性为O(n + k),其中k是切片的长度.我无法理解为什么在上述情况下不仅仅是O(k).
我知道切片返回一个新的列表,所以它是O(k),我知道列表以连续的方式保存它的数据,所以在中间插入一个项目将花费O(n)时间.但是上述操作可以在O(k)时间内轻松完成.我错过了什么吗?
此外,是否有文档可以找到有关此类问题的详细信息?我应该查看CPython实现吗?
谢谢.
我想在Matlab中总结矩阵的所有元素.如果我有一个名为A的矩阵,那么我可以通过调用来求和所有元素
sum(A(:));
Run Code Online (Sandbox Code Playgroud)
但我想总结从这样的函数返回的元素:
sum(gammaln(A)) % where gammaln is the logarithm of gamma function
Run Code Online (Sandbox Code Playgroud)
当然,我可以分两步完成:
B = gammaln(A);
sum(B(:));
Run Code Online (Sandbox Code Playgroud)
但是在这里我创建了一个B矩阵,我根本不需要它.我也可以这样做:
sum(sum(gammaln(A)))
Run Code Online (Sandbox Code Playgroud)
但是,sum的数量将等于我的矩阵的维数.它看起来很丑,矩阵维度可能会发生变化.
我很好奇是否有任何办法这样做.