使用set元素创建列表

时间:2016-08-14 18:39:51

标签: python list copy

示例说明了一切:

x = [set()]*5
x[0].add(1)
print x

的产率:

[set([1]), set([1]), set([1]), set([1]), set([1])]

我明白发生了什么,但这是预期的吗?我是否真的需要使用循环来初始化具有彼此不是别名的空集的列表?

1 个答案:

答案 0 :(得分:1)

  

我明白发生了什么事,但这是预料到的吗?

Python中需要此行为。在此上下文中使用*运算符可创建对set()个对象的引用,这意味着当您更改一个此类对象时(就像使用add()一样),您可以更改 all 对该对象的引用。

  

我是否真的需要使用循环来初始化一个列表,这些列表的空集不是彼此的别名?

是;这是创建单独引用的对象的正确方法。