簡體   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