【发布时间】:2016-01-08 17:35:18
【问题描述】:
我是 python 新手。我想知道如何返回并将下面的列表转换为正数。那会
打印:
[1, 5, 2, 10]
def func(a):
return abs(a)
print func(a=[1,-5,2,-10])
【问题讨论】:
标签: python list printing return
我是 python 新手。我想知道如何返回并将下面的列表转换为正数。那会
打印:
[1, 5, 2, 10]
def func(a):
return abs(a)
print func(a=[1,-5,2,-10])
【问题讨论】:
标签: python list printing return
$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = [1, -5, 2, -10]
>>> b = [abs(x) for x in a]
>>> print b
[1, 5, 2, 10]
>>>
正如 Claudiu 指出的,标准库中的 map 函数也可以工作。不过,Python 社区倾向于尽可能使用列表推导,因为它通常会使代码更易于阅读。
【讨论】:
您想为每个元素调用一次abs 函数并获取由此产生的列表。这正是map 的用途:
return map(abs, a)
您也可以使用列表推导:
return [abs(n) for n in a]
【讨论】:
这是一个更详细的答案:
def func(a):
for item in a:
yield abs(a)
print list(func(a=[1,-5,2,-10]))
【讨论】: