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. iOSにBluetooth接続リスナが内蔵されていますか?
- 2. Powershell、セット交差点が内蔵されていますか?
- 3. Iphone 1/2にはコンパスが内蔵されていますか?
- 4. 内蔵iPhoneコントロールがスローモーションでアニメーション化されています
- 5. グリッドボトムシートを内蔵していますか?
- 6. ページがリフレッシュされると、JavaScriptが内蔵JavaScriptがリセットされます
- 7. フラスコに内蔵されているサーバーは常に404 SERVER_NAMEと
- 8. ラジオボタン:アンドロイドのボタンに内蔵され
- 9. iPhoneマイクに内蔵されたミュート
- 10. Chromecastが内蔵されています:ハードウェアユーザーインターフェースの観点から、サードパーティの受信アプリケーションと対話する方法
- 11. は内蔵、パンダ
- 12. Android内蔵ストレージ
- 13. 内蔵タイプ
- 14. AngularJSフィルター式が更新されていません
- 15. iOSシミュレータ内蔵のMacブックを使用しています
- 16. android.media.Mediaplayer - Bluetoothヘッドセットが接続されているときにのみ内蔵スピーカーに鳴ります
- 17. django良いスタイル:ローカルプロジェクトに内蔵ディレクトリをコピーしますか?
- 18. 端末内蔵テキストエディタ?
- 19. .NET内蔵Webサーバー
- 20. Android内蔵のスピナー
- 21. 影内蔵のPyCharm
- 22. C++のリングカウンタ内蔵
- 23. フィルターが拒否されました。
- 24. 低レベルキャッシュキー(レール)。内蔵ですか?
- 25. 内蔵モバイルアプリとは何ですか?
- 26. Angularjs検索フィルターがすべてのページで検索されていません
- 27. django adminをログインしているユーザー(外部キーが表示されています)にフィルターをかけます。
- 28. Ramdaフィルター - 番号に数字が含まれています
- 29. Androidのアーカイブを解凍すると、内蔵ストレージに保存されます。
- 30. swift 3 md5セキュリティモジュールのみ内蔵されたハッシュ文字列
あなたの推論はそれほど説得力がありません。最初のケースはすでに 'positive = filter(some_test、values)'と書くことができます。したがって、少なくとも陰性=フィルタ(非(some_test)、値)のように単純なものでなければなりません。 –
注意! 'not'はPythonの組み込み関数で、' True'か 'False'のいずれかに直ちに評価されます。関数オブジェクトは 'False'と評価され、filterはそこで関数を期待しているので、最初の引数がブール型であるため、これはTypeErrorを与えます。他の読者は注意してください。 – Multihunter
@ Multultunter:そして 'not'は組み込み*ではありません。それは演算子です。 –