相关疑难解决方法(0)

什么时候不是使用python生成器的好时机?

这与你可以使用Python生成器函数什么相反:python生成器,生成器表达式和itertools模块是我最近python的一些特性.它们在设置操作链以在大量数据上执行时特别有用 - 我经常在处理DSV文件时使用它们.

那么什么时候不是使用生成器,生成器表达式或itertools函数的好时机?

  • 当我应该喜欢zip()itertools.izip(),或
  • range()结束xrange(),或
  • [x for x in foo]结束(x for x in foo)

显然,我们最终需要将生成器"解析"为实际数据,通常是通过创建列表或使用非生成器循环对其进行迭代.有时我们只需知道长度.这不是我要问的.

我们使用生成器,因此我们不会将新列表分配给内存以用于临时数据.这对于大型数据集尤其有用.对于小型数据集也有意义吗?有明显的内存/ CPU权衡吗?

考虑到列表理解性能与map()和filter()的开放性讨论,我特别感兴趣的是,如果有人对此做了一些分析.(alt链接)

python optimization iterator generator

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

如何在CPython中实现元组?

我一直在努力学习如何在幕后实现CPython.Python很高级很棒,但我不喜欢把它当成黑盒子.

考虑到这一点,元组是如何实现的?我已经看过了源码(tupleobject.c),但它已经过了我的脑海.

我看到的PyTuple_MAXSAVESIZE = 20PyTuple_MAXFREELIST = 2000,什么是节约型和"自由列表"?(长度为20/21或2000/2001的元组之间是否存在性能差异?什么强制实现最大元组长度?)

python tuples cpython data-structures python-internals

25
推荐指数
2
解决办法
5192
查看次数