我是python的新手,我正在尝试理解map()函数。有没有更好的方法来做到这一点
map(lambda x: x+"+" ,map(str,range(5)))
output : ['0+', '1+', '2+', '3+', '4+']
答案 0 :(得分:1)
对于大多数这样的任务,最好使用列表推导,如下所示:
[str(i) + '+' for i in range(5)]
在这里,您构建的列表中每个元素仅取决于数字i
。然后使用str(i) + '+'
构建所需元素的一种方法。另一个是'{} +'.format(i)
,但这与使用列表理解无关。
map
函数在功能上等同于列表推导语法的限制使用。请考虑以下通用示例,它们将生成相同的输出:
list(map(fun, iterable))
[fun(el) for el in iterable]
在您的示例中,您使用fun
表达式在map
调用内构建函数lambda
。在Python 3中需要额外的list()
调用,因为map
返回生成器而不是list
。
答案 1 :(得分:1)
您可以将format
- 方法直接用作map
- 参数:
map("{}+".format, range(5))
答案 2 :(得分:0)
正如你在Map中所说,你可以映射这样的东西:
print(list(map(lambda x:str(x)+'+',range(5))))
输出:
['0+', '1+', '2+', '3+', '4+']
其他信息:
map()是一个带有两个参数的函数:
map(g, iterable)
第一个参数函数是一个函数,第二个函数是一个序列。
Python 3 map相当于生成器表达式
(g(x) for x in iterable)
答案 3 :(得分:0)
output = ['{}+'.format(i) for i in range(5)]
print output
['0+', '1+', '2+', '3+', '4+']