memory-management - 如何在 Python 中创建空列表的列表或元组?

标签 memory-management python

我需要逐步填充一个列表或一个列表元组。看起来像这样的东西:

result = []
firstTime = True
for i in range(x):
    for j in someListOfElements:
        if firstTime:
            result.append([f(j)])
        else:
            result[i].append(j)

为了让它不那么冗长更优雅,我想我会预先分配一个空列表的列表

result = createListOfEmptyLists(x)
for i in range(x):
    for j in someListOfElements:
        result[i].append(j)

预分配部分对我来说并不明显。当我执行 result = [[]] * x 时,我会收到一个 x 对同一列表的引用列表,因此输出如下

result[0].append(10)
print result

是:

[[10], [10], [10], [10], [10], [10], [10], [10], [10], [10]]

我可以使用循环(result = [[] for i in range(x)]),但我想知道是否存在“无循环”解决方案。

是获得我想要的东西的唯一方法

最佳答案

result = [list(someListOfElements) for _ in xrange(x)]

这将创建 x 个不同的列表,每个列表都有一个 someListOfElements 列表的副本(该列表中的每个项目都是引用,但其所在的列表是一个副本)。

如果更有意义,请考虑使用 copy.deepcopy(someListOfElements)

生成器和列表推导和事物被认为是非常pythonic

关于memory-management - 如何在 Python 中创建空列表的列表或元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3880037/

相关文章:

python - 将列与 pandas 中的常量值相乘。类型错误

python - 在 OSX 上调用 python 和 Spyder 的方法

c++ - 伙伴分配算法 - 堆扩展

android - 使用 opencv 2.0 明确发布 Mat

java - 如何通过多线程java编程最大化资源(RAM和CPU)使用率?

python - 在终端中创建两个单独的窗口

python - 如何使用python从S3下载视频?

c++ - 在 C++ 中返回一个数组

objective-c - 自动释放并分配给 nil

python - python dict 到 json 二进制字符串的最快方法