如何将函数应用于变量输入列表?例如,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
是内置的。这只是一个例子。
Answers:
>>> from string import upper
>>> mylis=['this is test', 'another test']
>>> map(upper, mylis)
['THIS IS TEST', 'ANOTHER TEST']
更简单的是,您可以使用str.upper
而不是从中导入string
(感谢@alecxe):
>>> map(str.upper, mylis)
['THIS IS TEST', 'ANOTHER TEST']
在Python 2.x中,map
通过将给定函数应用于列表中的每个元素来构造新列表。filter
通过限制True
使用给定函数求值的元素来构造新列表。
在Python 3.x中,map
和filter
构建迭代器,而非列表,所以如果你使用Python 3.x和要求的清单列表解析的方法会更适合。
map
仅list
在python2.x上构造一个-在python3.x上它返回一个迭代器。通常,这无关紧要,但是,如果您需要列表作为输出,那么最好使用列表推导(如在其他答案中那样)。
或者,您也可以采用以下list comprehension
方法:
>>> mylis = ['this is test', 'another test']
>>> [item.upper() for item in mylis]
['THIS IS TEST', 'ANOTHER TEST']
list(map(str.upper, mylist))
map(str.upper, mylis)
也会起作用,有助于避免string
导入。