繁体   English   中英

向集合列表中的元素添加值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM