1

セット内の各要素に適用される関数によって返されるすべての結果を含むセットを作成しようとしています。次のコードスニペットは、うまくいけば明確になります。

results = set()    
for node in nodes:
    results = set.union(results, foo(node))

コードは私が望むことを達成しますが、それははるかに良く、より簡潔に書き直すことができると確信しています。この構成を数回繰り返さなければならないので、どんな助けでも大歓迎です。

前もって感謝します。

4

3 に答える 3

3
results = set()    
for node in nodes:
    results.update(foo(node))

また

results = set.union(*[foo(node) for node in nodes])

空にすることができる場合nodesは、これを使用して、例外がスローされないことを確認します。

results = set.union(set(), *[foo(node) for node in nodes])
于 2013-01-09T10:19:18.497 に答える
0

|=set unionに演算子を使用できることを除いて、あなたの解決策は大丈夫だと思います。

results = set()    
for node in nodes:
    results |= set(foo(node))

または、すべての結果をリストに収集し、それをキャストして最後に1回設定することもできます(大量のデータを期待しない場合)

于 2013-01-09T10:20:39.057 に答える
0

多分使用するreduce

results = reduce(lambda x,y: set.union(x,y), [foo(x) for x in nodes])
于 2013-01-09T10:21:38.090 に答える