如何在 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()
方法。
我想使用 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()
方法。