小编Cav*_*man的帖子

Python设置切片复杂性

假设我有两个名为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实现吗?

谢谢.

python list time-complexity slice

7
推荐指数
1
解决办法
1893
查看次数

在不使用冒号运算符的情况下在matlab中求和所有元素

我想在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的数量将等于我的矩阵的维数.它看起来很丑,矩阵维度可能会发生变化.

我很好奇是否有任何办法这样做.

matlab

6
推荐指数
1
解决办法
3921
查看次数

标签 统计

list ×1

matlab ×1

python ×1

slice ×1

time-complexity ×1