Pythonのフィルターの概念を学んでいます。このような単純なコードを実行しています。
>>> def f(x): return x % 2 != 0 and x % 3 != 0
>>> filter(f, range(2, 25))
しかし、リストを取得する代わりに、このようなメッセージが表示されます。
<filter object at 0x00FDC550>
これは何を意味するのでしょうか?それは、フィルタリングされたオブジェクト、つまり出てくるリストがそのメモリの場所に保存されているということですか?必要なリストを取得するにはどうすればよいですか?
python 3.xを使用しているようです。 python3では、filter
、map
、Zip
などは、反復可能であるがリストではないオブジェクトを返します。言い換えると、
filter(func,data) #python 2.x
以下と同等です:
list(filter(func,data)) #python 3.x
あなたは(多くの場合)怠filteringな意味でフィルタリングをしたいので変更されたと思う繰り返し中に。
リストの内包表記とジェネレータ式に精通している場合、上記のフィルターは(ほぼ)python3.xの次のフィルターと同等です。
( x for x in data if func(x) )
とは対照的に:
[ x for x in data if func(x) ]
python 2.x