对列表中的每个元素应用函数

假设我有这样一个列表:

mylis = ['this is test', 'another test']

如何对列表中的每个元素应用函数?例如,我希望能够应用 str.upper来获取

['THIS IS TEST', 'ANOTHER TEST']
349961 次浏览

使用内置的标准库 map:

>>> mylis = ['this is test', 'another test']
>>> list(map(str.upper, mylis))
['THIS IS TEST', 'ANOTHER TEST']

在 Python 2.x 中,map通过对列表中的每个元素应用给定函数来构造所需的新列表。

在 Python 3.x 中,map构造迭代器而不是列表,因此必须调用 list。如果你正在使用 Python 3. x,并且需要一个列表,那么列表内涵的方法会更适合你。

尝试使用 列表内涵:

>>> mylis = ['this is test', 'another test']
>>> [item.upper() for item in mylis]
['THIS IS TEST', 'ANOTHER TEST']

有时候,您需要将一个函数应用到某个列表的成员。下面的代码对我很有用:

>>> def func(a, i):
...     a[i] = a[i].lower()
>>> a = ['TEST', 'TEXT']
>>> list(map(lambda i:func(a, i), range(0, len(a))))
[None, None]
>>> print(a)
['test', 'text']

请注意,地图()的输出被传递给 名单构造函数,以确保列表在 Python3中被转换。应该忽略用 没有值填充的返回列表,因为我们的目的是在适当的位置转换列表