filter
の逆を行う関数がPythonにはありますか?私。コールバックがFalse
を返すiterableのアイテムを保持しますか?何も見つかりませんでした。フィルター()が内蔵されていますか?
7
A
答えて
15
filter()
の組み込み逆関数はありません。単純にが逆転する可能性があるため、です。ただ、not
を追加します。
positive = filter(lambda v: some_test(v), values)
negative = filter(lambda v: not some_test(v), values)
itertools
モジュールは、ブールテストを反転することはとても簡単ですので、かなり冗長であるitertools.ifilterfalse()
を、持っていません。 itertools
バージョンは常にジェネレータとして動作します。
7
itertools.filterfalse
またはMartijnと指定すると、not
をフィルターに使用するラムダの内側に配置できます。
5
別のオプション:
from operator import not_
compose = lambda f, g: lambda x: f(g(x))
...
ys = filter(compose(not_, predicate), values)
はあなたが利用可能compose()
の前のロールバージョンを有することができる(例えば、機能またはtoolz)。
0
のanswer 'Martijn PietersへのコメントS' Ross Bencinaから:あなたの推論は非常に説得力がない
。
:最初のケースは、すでにそのためのために頼まれ、私は、単純な否定のラッパー関数を使用することをお勧めしdef _not(func): def not_func(*args, **kwargs): return not func(*args, **kwargs) return not_func
negative = filter(not(some_test), values)
として、少なくとも同じくらい簡単であるべき書か
positive = filter(some_test, values)
することができ
上記のように2行目を書き込むことができます(アンダースコアやその他の区別が付け加えられています)。 not
オペレータは上書きできません):
negative = filter(_not(some_test), values)
関連する問題
- 1. Powershell、セット交差点が内蔵されていますか?
- 2. Iphone 1/2にはコンパスが内蔵されていますか?
- 3. 内蔵iPhoneコントロールがスローモーションでアニメーション化されています
- 4. ラジオボタン:アンドロイドのボタンに内蔵され
- 5. iPhoneマイクに内蔵されたミュート
- 6. AngularJSフィルター式が更新されていません
- 7. Android内蔵ストレージ
- 8. iOSシミュレータ内蔵のMacブックを使用しています
- 9. android.media.Mediaplayer - Bluetoothヘッドセットが接続されているときにのみ内蔵スピーカーに鳴ります
- 10. .NET内蔵Webサーバー
- 11. 端末内蔵テキストエディタ?
- 12. Android内蔵のスピナー
- 13. 低レベルキャッシュキー(レール)。内蔵ですか?
- 14. 内蔵モバイルアプリとは何ですか?
- 15. Windows Phone 7内蔵サウンド
- 16. SDカード/内蔵アプリのフィルタリスト
- 17. .NET内蔵のAVLツリー?
- 18. SWT内蔵のUnix端末
- 19. フィルターの内容は、私がこのようにコメントしてい
- 20. セット内蔵ズームコントロールがエミュレータアプリケーションをクラッシュします
- 21. C#:ノートパソコンに内蔵されて統合されたスキャナからの取り込み指紋
- 22. 内蔵マイク内蔵のios録音には、1つのチャンネルサウンドしかありません。
- 23. LDAPフィルターは、検索が含まれている(アクティブディレクトリ)
- 24. 'ユーザーの入力としてTextBoxを含むフィルター'が含まれています
- 25. ASP.net - 自分のログインモジュールまたは内蔵ですか?
- 26. iPhoneオーディオ再生:内蔵スピーカーを強制しますか?
- 27. UITextField - 内蔵iPhoneキーボードの入力を検出しますか?
- 28. iphoneは内蔵のアプリケーションからオーディオを読み込みます
- 29. Chocolateyが〜2GB内蔵パッケージをパックできないのはなぜですか?
- 30. DataGridViewフィルターが機能していませんか?
あなたの推論はそれほど説得力がありません。最初のケースはすでに 'positive = filter(some_test、values)'と書くことができます。したがって、少なくとも陰性=フィルタ(非(some_test)、値)のように単純なものでなければなりません。 –
注意! 'not'はPythonの組み込み関数で、' True'か 'False'のいずれかに直ちに評価されます。関数オブジェクトは 'False'と評価され、filterはそこで関数を期待しているので、最初の引数がブール型であるため、これはTypeErrorを与えます。他の読者は注意してください。 – Multihunter
@ Multultunter:そして 'not'は組み込み*ではありません。それは演算子です。 –