[解決済み] foo = filter(...) がリストではなく <filter object> を返すのはなぜですか?重複
2023-05-29 09:46:24
質問
Python IDLE 3.5.0シェルで作業しています。私の理解では、組み込みの "filter" 関数は、あなたがそれに渡すものに応じて、リスト、タプル、または文字列のいずれかを返します。では、なぜ以下の最初の代入はうまくいき、2番目の代入はうまくいかないのでしょうか (「>>> 」は Python の対話型プロンプトです)。
>>> def greetings():
return "hello"
>>> hesaid = greetings()
>>> print(hesaid)
hello
>>>
>>> shesaid = filter(greetings(), ["hello", "goodbye"])
>>> print(shesaid)
<filter object at 0x02B8E410>
どのように解決するのですか?
の python ドキュメントを見てください。
filter(function, iterable)
(以下
ここで
):
の要素からイテレータを構成します。 イテラブル の要素で 関数 は真を返します。
つまり、リストを返すためには、リストクラスを使う必要があるのです。
shesaid = list(filter(greetings(), ["hello", "goodbye"]))
の結果を呼び出そうとしているので、これはおそらくあなたが望んだことではありません。
greetings()
の結果を呼び出そうとするからで、それは "hello" であり、入力リストの値ではうまくいきません。ここでもイテレータの型が関係します。なぜなら、結果は使うまで生成されないからです(たとえば
list()
を呼び出すなどして)。そのため、最初はエラーが発生しませんが、何かしようとすると
shesaid
を使って何かしようとすると、動かなくなります。
>>> print(list(shesaid))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable
リストのどの要素が "hello" と等しいかをチェックしたい場合は、次のようなものを使用する必要があります。
shesaid = list(filter(lambda x: x == "hello", ["hello", "goodbye"]))
(私はあなたの関数をラムダに入れました。quot;通常の関数についてはRandy Cの答えを参照してください)
関連
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] なぜlist.join(string)ではなくstring.join(list)なのでしょうか?
-
[解決済み] Pythonのクラスはなぜオブジェクトを継承するのですか?
-
[解決済み] と'is'のどちらかを使って文字列を比較すると、異なる結果になることがあるのはなぜですか?
-
[解決済み] リスト内包とラムダ+フィルタの比較
-
[解決済み] なぜPythonのコードは関数の中でより速く実行されるのですか?
-
[解決済み] なぜ[]はlist()よりも速いのですか?
-
[解決済み] not(True) in [False, True]」はなぜFalseを返すのですか?
-
[解決済み】Pythonで辞書のキーをリストとして返すには?
-
[解決済み】Ellipsisオブジェクトは何をするのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] Python Empty Generator 関数
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?
-
[解決済み] フィルタを呼び出すと、<filter object at ...>が返されます。> [重複] を返す。