如何在 map 函数中使用 strip

how to use strip in map function

我想使用 map 来获取字符串列表:

value = '1, 2, 3'

my_list = list(map(strip, value.split(',')))

但得到了:

NameError: name 'strip' is not defined

预期结果:my_list=['1','2','3']

strip 仍然只是一个变量,而不是对每个字符串上的 str.strip() 方法的引用。

你可以在这里使用未绑定的str.strip方法:

my_list = list(map(str.strip, value.split(',')))

这将适用于任何 str 实例:

>>> value = '1, 2, 3'
>>> list(map(str.strip, value.split(',')))
['1', '2', '3']

如果你想调用一个在字符串中命名的方法,并且你有多种类型恰好都支持该方法(所以未绑定的方法引用不起作用),你可以使用 operator.methodcaller() object:

from operator import methodcaller

map(methodcaller('strip'), some_mixed_list)

但是,如果您想输出一个列表对象,我会使用列表推导式而不是 map() 无论如何:

[v.strip() for v in value.split(',')]

您也可以使用 lambda 来达到您的目的:

my_list = map(lambda x:x.strip(), value.split(","))

其中 value.split(",") 中的每个元素作为参数 x 传递给 lambda x:x.strip(),然后对其调用 strip() 方法。