我刚刚意识到这两种行为不同
a = [set()] * 3
b = [set(), set(), set()]
a的元素将与集合的实例相同,即
a[0] is a[1] is a[2]
是真的
b的元素都将是集合的不同实例。
b[0] is b[1] is b[2]
是假的
我想知道是否存在一种以智能方式初始化具有唯一集合实例的列表的技术。
或者这是唯一的方法:
a = []
for i in range(3):
a.append(set())
答案 0 :(得分:4)
您可以使用列表理解:
b = [set() for i in range(3)]
由于在列表推导中为每次迭代计算了表达式set()
,因此可以获得3个不同的集合。
答案 1 :(得分:1)
使用列表推导。
a = [set() for i in range(3)]