如何在地图功能中使用条带

Tom*_*ina 2 python python-3.x map-function

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

value = '1, 2, 3'

my_list = list(map(strip, value.split(',')))
Run Code Online (Sandbox Code Playgroud)

但得到了:

NameError: name 'strip' is not defined
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 13

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

您可以在str.strip此处使用未绑定的方法:

my_list = list(map(str.strip, value.split(',')))
Run Code Online (Sandbox Code Playgroud)

这将适用于任何str实例:

>>> value = '1, 2, 3'
>>> list(map(str.strip, value.split(',')))
['1', '2', '3']
Run Code Online (Sandbox Code Playgroud)

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

from operator import methodcaller

map(methodcaller('strip'), some_mixed_list)
Run Code Online (Sandbox Code Playgroud)

但是,map()如果要输出列表对象,我只需使用列表解析:

[v.strip() for v in value.split(',')]
Run Code Online (Sandbox Code Playgroud)


Iva*_*van 5

您还可以使用 alambda来实现您的目的:

my_list = map(lambda x:x.strip(), value.split(","))
Run Code Online (Sandbox Code Playgroud)

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