python - 列表创建的空间复杂度

标签 python algorithm python-2.7 space-complexity

谁能给我解释一下 beyond program 的空间复杂度是多少,为什么会这样?

def is_pal_per(str):

s = [i for i in str]
nums = [0] * 129

for i in s:
    nums[ord(i)] += 1

count = 0

for i in nums:
    if i != 0 and i / 2 == 0:
        count += 1

print count

if count > 1:
    return False
else:
    return True

其实我对这行代码很感兴趣。它对上述程序的空间复杂度有何影响?

s = [i for i in str]

nums = [0] * 129

最佳答案

我不清楚你在哪里遇到了这个问题。 s 只是 str 中单个字符的列表。空间消耗为len(s)

nums 是一个常数大小,由 O(N) 项控制。

这段代码是你写的,还是交给你的?编程风格非常不是“Pythonic”。


至于你的代码,从这个折叠开始:

count = 0

for char in str:
    val = ord[char] + 1
    if abs(val) == 1:
        count += 1

print count

return count == 0

首先,我替换了你的单字母变量 (s => char; i => val ).然后,我删除了大部分 中间步骤,留下几个帮助您阅读代码。最后,我用了一个直截了当的 bool 值来返回,而不是原来的那种绕口令。

没有使用 Python 的计数方法——那会进一步缩短函数。顺便说一句,您打印统一值的计数,还是只需要返回 bool 值?如果它只是返回值,您可以使其更短。

关于python - 列表创建的空间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39459701/

相关文章:

c++ - 计算二进制模式的子集

python-2.7 - 如何创建一个安装 python 依赖项的 RPM?

python - 对加速度进行数值积分的更好方法

python - 容器重启原因 OOMKilled,退出代码为 1

algorithm - 性别检测算法如何工作?

algorithm - 六边形 map 查找是否有一些网格被包围算法

Python:未更新文档字符串

python - 通过 python 运行 mysqldump 时出错-访问被拒绝

python - 将 ManyToManyField 拆分为 ModelForm 中的多个表单字段

python - Python 中的函数定义