当前位置: 首页 > 知识库问答 >
问题:

使用映射函数传递参数[重复]

楚羽
2023-03-14

陈述

a = ['abc', 'efg', 'hij']

我想去

a = ['abc!', 'efg!', 'hij!']

但是显然没有使用的元素:...因为它不是切肉刀,我想了解更多关于map函数及其传递参数的方式。

所以我尝试附加一个使用map函数列表的所有元素。但在此之前,append是一个list方法,而不是一个str方法。

b = map(list,a) # gives : a = [['a','b','c'],['d','e','f'],['h','i','j']]
a = map(list.append(['!']), b) 

最后一个映射函数返回TypeError:

TypeError: append() takes exactly one argument (0 given)

我想知道是否可以将参数传递给map使用的方法。感谢

共有3个答案

白吕恭
2023-03-14

使用列表理解

>>> a = ['abc', 'efg', 'hij']
>>> ["{}!".format(x) for x in a]
['abc!', 'efg!', 'hij!']

地图是如何工作的

map(函数,迭代器)

它一个接一个地接受元素,并对每个元素应用指定的函数

例子:

>>> def add_str(x):
...     return x+"!"
...
>>> a
['abc', 'efg', 'hij']
>>> map(add_str, a)
['abc!', 'efg!', 'hij!']
甄阳朔
2023-03-14

map接收两个参数,一个函数和一个列表。

它为每个项调用一次函数,并将当前项作为参数。

由于map返回的内容,将字符串转换为列表并附加到列表中可能不是最佳选择,但您实际上可以使用运算符将字符串附加到一起。

您可以通过执行以下操作来实现您的目标:

map(lambda s: s + '!', a)  # => ['abc!', 'efg!', 'hij!']

lambda只是函数的另一种语法,其参数名为s,它返回s'!'

闻人昊昊
2023-03-14

您可以通过以下代码获得预期结果:

a = ['abc', 'efg', 'hij']
map(lambda x: x + '!', a) # ['abc!', 'efg!', 'hij!']

map的第一个参数是应用于第二个参数iterable上所有项目的函数。您不能直接将参数传递给给定给map的函数,但可以创建另一个传递参数的函数(或lambda),就像上面的示例一样。

典型的列表理解应该比map更受青睐,因为它更明显你在做什么:

[x + '!' for x in a] # ['abc!', 'efg!', 'hij!']
 类似资料:
  • 使用,并希望将常量/参数传递给自定义映射器 我的目的地具有 Map 类型的字段

  • 所以我试图建立一个简单的网站,这样工作。 我在这里怎么办?而不是扩展另一个HTTPServlett 谢谢你抽出时间

  • 问题内容: 我是Hadoop的新手。我想从mapper类的map函数中的main函数(Java程序)访问命令行参数。请提出方法。 问题答案: Hadoop 0.20引入了新的MR API,新的(oahmapreduce软件包)和旧的MR API(oahmapred)之间没有太多功能差异,只是可以使用新API在映射器和化简器中提取数据。提到Arnon的是旧的API。 查看本文以使用新旧API传递参数

  • 我了解在ES6中arrow函数是如何工作的,词法也是如此,但我想知道是否有人知道将参数传递给arrow函数的方法? 在ES5中,您可以简单地执行以下操作: 但是,在ES6中,如果使用箭头函数,如下所示: 变量返回一个对象,该对象与参数非常接近。 所以,我想知道是否有人有办法将参数传递给arrow函数? 我想也许我应该给一些关于我试图完成的事情的信息,也许如果上面的不可能,有人有更好的主意。 基本上

  • 我正在结合Lombok和构建器模式使用MapSTRt。我有一个问题,即MapSTRt正在对生成的映射器函数中的所有参数进行显式空检查,并在所有参数为空的情况下提前退出,例如: 我想实现MapStruct不实现完整的空检查。即使所有参数都为null,它也应该设置整个生成器,并在生成器进行null检查(如果有)时调用build。