可変数の独立したセットを含める必要があるリストがあります。次のコードを実行すると、文字列 "testing" を最初のセットだけに追加したいと思います。
numberOfSets = 3
test = [set()]*numberOfSets
test[0].add("testing")
print test
ただし、印刷するtest
と、すべてテストを含む 3 つの同一のセットが表示されます。各セットに個別にアクセスできるようにリストを設定するにはどうすればよいですか?
可変数の独立したセットを含める必要があるリストがあります。次のコードを実行すると、文字列 "testing" を最初のセットだけに追加したいと思います。
numberOfSets = 3
test = [set()]*numberOfSets
test[0].add("testing")
print test
ただし、印刷するtest
と、すべてテストを含む 3 つの同一のセットが表示されます。各セットに個別にアクセスできるようにリストを設定するにはどうすればよいですか?
できるよ
test = [set() for _ in xrange(numberOfSets)] # use 'range' in Python 3.x
[set()]*x
上記の内包表記は、必要に応じて、反復ごとに新しい独立したセットを作成しますx
が、同じセット インスタンスのリストを作成します。
一般に、要素が変更可能なリストを乗算するときは常に非常に注意する必要があります。
を実行する[set()]*3
と、同じオブジェクトを参照する 3 つのセットが作成されるため、1 つの値を変更すると、他の値も変更されます。ここでは代わりにリスト内包表記を使用します。
>>> numberOfSets = 3
>>> test = [set() for _ in xrange(numberOfSets)]
>>> test[0].add("testing")
>>> print test
[set(['testing']), set([]), set([])]