セットを受け取り、複数のサブセットを返す関数/イディオム(任意の言語で)を知っていますか?ファンクションスタイルでの複数のセットの理解
不可欠スタイルなどでこれを行うには簡単です:
a = b = []
for x in range(10):
if even(x):
a.append(x)
else:
b.append(x)
またはわずかに良い:
[even(x) and a.append(x) or b.append(x) for x in range(10)]
セットの理解は、単一の述語に基づいて単一のリストを返します(そしてそれ以来事実上のマップ)バイナリ述語または複数の述語に基づいて、入力を2つ以上のビンに分割するものがあるはずです。
私が思い付くことができますneatest構文は次のとおりです。
>> def partition(iterable, *functions):
>> return [filter(f,iterable) for f in functions]
>> partition(range(10), lambda x: bool(x%2), lambda x: x == 2)
[[1, 3, 5, 7, 9], [2]]
ああ、私はHoogleがタイプサインに基づいて検索を許可したのを忘れてしまった!私の好奇心は満足しています、ありがとう。 – schallis