変数入力のリストに関数を適用するにはどうすればよいですか?たとえばfilter
関数は真の値を返しますが、関数の実際の出力は返しません。
from string import upper
mylis=['this is test', 'another test']
filter(upper, mylis)
['this is test', 'another test']
予想される出力は次のとおりです。
['THIS IS TEST', 'ANOTHER TEST']
upper
が組み込まれていることは知っています。これは単なる例です。
map
の代わりに filter
を使用するつもりだと思います:
>>> from string import upper
>>> mylis=['this is test', 'another test']
>>> map(upper, mylis)
['THIS IS TEST', 'ANOTHER TEST']
さらに簡単に、string
からインポートする代わりにstr.upper
を使用できます(@alecxeのおかげです)。
>>> map(str.upper, mylis)
['THIS IS TEST', 'ANOTHER TEST']
Python 2.xでは、map
は、リスト内のすべての要素に特定の関数を適用することにより、新しいリストを作成します。 filter
は、指定された関数でTrue
に評価される要素に制限することにより、新しいリストを作成します。
Python 3.xでは、map
およびfilter
がリストの代わりにイテレーターを構成します。したがって、Python 3.xを使用してリストを必要とする場合は、リスト内包アプローチが適しています。
または、代わりに、 list comprehension
アプローチを使用できます。
>>> mylis = ['this is test', 'another test']
>>> [item.upper() for item in mylis]
['THIS IS TEST', 'ANOTHER TEST']