2

可変数の独立したセットを含める必要があるリストがあります。次のコードを実行すると、文字列 "testing" を最初のセットだけに追加したいと思います。

numberOfSets = 3    
test = [set()]*numberOfSets
test[0].add("testing")
print test

ただし、印刷するtestと、すべてテストを含む 3 つの同一のセットが表示されます。各セットに個別にアクセスできるようにリストを設定するにはどうすればよいですか?

4

2 に答える 2

4

できるよ

test = [set() for _ in xrange(numberOfSets)]  # use 'range' in Python 3.x

[set()]*x上記の内包表記は、必要に応じて、反復ごとに新しい独立したセットを作成しますxが、同じセット インスタンスのリストを作成します。

一般に、要素が変更可能なリストを乗算するときは常に非常に注意する必要があります。

于 2013-07-27T23:25:27.770 に答える
4

を実行する[set()]*3と、同じオブジェクトを参照する 3 つのセットが作成されるため、1 つの値を変更すると、他の値も変更されます。ここでは代わりにリスト内包表記を使用します。

>>> numberOfSets = 3   
>>> test = [set() for _ in xrange(numberOfSets)]
>>> test[0].add("testing")
>>> print test
[set(['testing']), set([]), set([])]
于 2013-07-27T23:25:59.123 に答える