Python 用map函数传递参数
陈述Python 用map函数传递参数,python,python-2.7,Python,Python 2.7,陈述 a = ['abc', 'efg', 'hij'] 我想去 a = ['abc!', 'efg!', 'hij!'] 但是显然,对于a:中的元素不使用,因为它不是cleaver,我想了解更多关于map函数以及它如何传递参数的信息 所以我尝试附加一个“!”添加到列表的所有元素。但在此之前,append是一种list方法,而不是str方法 b = map(list,a) # gives : a = [['a','b','c'],['d','e','f'],['h','i','j']] a
a = ['abc', 'efg', 'hij']
我想去
a = ['abc!', 'efg!', 'hij!']
但是显然,对于a:中的元素不使用,因为它不是cleaver,我想了解更多关于map
函数以及它如何传递参数的信息
所以我尝试附加一个“!”使用映射功能将代码>添加到列表的所有元素。但在此之前,append
是一种list
方法,而不是str
方法
b = map(list,a) # gives : a = [['a','b','c'],['d','e','f'],['h','i','j']]
a = map(list.append(['!']), b)
最后一个map函数返回一个TypeError:
TypeError: append() takes exactly one argument (0 given)
我想知道是否可以将参数传递给map
使用的方法。
谢谢 您可以使用以下代码获得预期结果:
a = ['abc', 'efg', 'hij']
map(lambda x: x + '!', a) # ['abc!', 'efg!', 'hij!']
的第一个参数是应用于第二个参数iterable
上所有项目的函数。您不能直接将参数传递给给定给map
的函数,但可以创建另一个传递参数的函数(或lambda
),就像上面的示例一样
通常应优先于map
,因为这样做更明显:
[x + '!' for x in a] # ['abc!', 'efg!', 'hij!']
map
接收两个参数,一个函数和一个列表
它为每个项调用一次函数,并将当前项作为参数
由于map
返回的结果,将字符串转换为列表并附加到列表中可能不是最佳选择,但实际上可以使用+
操作符将字符串附加到一起
您可以通过执行以下操作来实现您的目标:
map(lambda s: s + '!', a) # => ['abc!', 'efg!', 'hij!']
lambda
只是函数的另一种语法,它的参数名为s,它返回s+'!'代码>使用列表理解
:
>>> a = ['abc', 'efg', 'hij']
>>> ["{}!".format(x) for x in a]
['abc!', 'efg!', 'hij!']
地图的工作原理
映射(函数、迭代器)
它一个接一个地接受元素,并将指定的函数应用于每个元素
例如:
>>> def add_str(x):
... return x+"!"
...
>>> a
['abc', 'efg', 'hij']
>>> map(add_str, a)
['abc!', 'efg!', 'hij!']
你需要加入一个lamba,但你不应该使用map来产生副作用,它会比常规循环慢,不知道你为什么这么想*但显然没有在a中使用for元素:…因为它不聪明*因为像你这样使用map更糟糕,我想避免人们使用循环函数回答。就是这样。我也认为我的问题与“理解地图功能”有关,但它更具体。这不是真的复制品。感谢您的帮助:)除了他们表示不想使用列表理解和学习地图功能之外。如果被否决的选民能够对问题进行评论,以便改进响应,那将是非常好的。谢谢niemmi。你的回答很好。