これは私のコードです。
s = set()
for x in [ {1,2}, {3,4}, {5,1} ]:
s |= x
返しますset([1, 2, 3, 4, 5])
。
そのような場合に集合内包表記を使用することは可能ですか? どうしたら短く書けるでしょうか?
これは私のコードです。
s = set()
for x in [ {1,2}, {3,4}, {5,1} ]:
s |= x
返しますset([1, 2, 3, 4, 5])
。
そのような場合に集合内包表記を使用することは可能ですか? どうしたら短く書けるでしょうか?
set.union
set.union(*[{1,2}, {3,4}, {5,1}])
# {1, 2, 3, 4, 5}
なぜループが必要なのですか?を使用するset.union
と、一度に 3 つ以上のセット (コンテナー) の結合を計算できます。2 番目 (およびそれ以降) の引数を設定する必要がないため、「コンテナー」と言います。
set.union(*[{1,2}, [3,4], [5,1]])
# {1, 2, 3, 4, 5}
ただし、最初にする必要があります。あるいは、
set().union(*[[1,2], [3,4], [5,1]])
# {1, 2, 3, 4, 5}
セット オブジェクト (クラスではなく)を呼び出す場合union
、どの引数もセットである必要はありません。
functools.reduce
from functools import reduce
reduce(set.union, [{1,2}, {3,4}, {5,1}])
# {1, 2, 3, 4, 5}
これにより、ペアごとの削減が実行され、結果が累積されます。ただし、最初のオプションほど良くはありません。
ここで集合理解が本当に必要な場合:
lst = [{1,2}, {3,4}, {5,1}]
{elem for set_ in lst for elem in set_}