[英]Add a value to an element in a list of sets
我正在使用python,我有一组列表,如下所示:
list = [set([])]*n
...其中n是我想要的列表中的集合数。 我想向列表中的特定集合添加一个值。 说,第二盘。 我试过了
list[1].add(value)
set in the list. 但这会将值添加到列表中的集合。 这种行为对我来说很不直观。 通过进一步的测试,我认为我已经找到了问题:列表显然包含10个相同集合的实例,或10个指向同一集合的指针,等等。 通过重复调用构建列表
list.append(set([]))
允许我使用以上语法将元素添加到单个集合中。 所以我的问题是:我的第一个列表构建技术到底发生了什么? 很明显,我不太了解语法。 另外,是否有更好的方法初始化n元素列表? 我使用这种语法已有一段时间了,这是我的第一个问题。
您已经亲自总结了很多问题X*n
语法构成X的一个实例,并包含n次。 对于'a'*10
类的问题而言,这并不是问题,因为该字符串中的每个字符是否都指向相同的'a'并不重要,但是对于诸如列表和集合之类的可变结构而言,则确实如此。 您可以使用列表推导来制作n个单独的集合:
list = [set() for x in xrange(n)]
对,那是正确的。 *语法只是多次复制引用。 您的方法可以正常工作,或者您可以使用列表推导来构造多个集合,如下所示:
list = [set([]) for x in xrange(n)];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.