You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中创建包含独立空集合的列表?

创建包含独立空集合的列表的替代方法

你已经发现用[set()]*x生成的列表里,所有元素都指向同一个集合实例——修改其中一个,所有元素都会跟着变。除了列表推导式,还有几种方法能生成每个元素都是独立空集合的列表:

1. 生成器表达式配合list()

和列表推导式逻辑一致,只是写法略有不同:

x = 5
l = list(set() for _ in range(x))
l[0].add(1)
print(l)  # [{1}, set(), set(), set(), set()]

2. 使用itertools.repeat结合map

借助itertools.repeat控制生成次数,再用map每次创建新集合:

import itertools
x = 5
l = list(map(lambda _: set(), itertools.repeat(None, x)))
l[0].add(1)
print(l)  # [{1}, set(), set(), set(), set()]

3. functools.partial配合map

用partial包装set构造方法,通过map生成多个独立实例:

from functools import partial
x = 5
l = list(map(partial(set), range(x)))
l[0].add(1)
print(l)  # [{1}, set(), set(), set(), set()]

4. 手动循环初始化

最直白的写法,逐个添加新集合到列表:

x = 5
l = []
for _ in range(x):
    l.append(set())
l[0].add(1)
print(l)  # [{1}, set(), set(), set(), set()]

这些方法的核心原理都是每次创建一个全新的集合实例,避免了引用同一个对象的问题。同样逻辑也适用于生成包含独立空列表的列表,只需把set()换成[]或list()即可。

内容的提问来源于stack exchange,提问作者Michael Hearn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:42:28