python—使用map()函数输入整数列表的绝对值

bprjcwpo  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(412)

通常,当我必须以这种方式输入空格分隔的整数列表时:

12 15 31 -12

我使用这个函数:

list(map(int, input().split()))

这样它就回来了 [12, 15, 31, -12] .
但是,现在,如果出于某种原因,我必须只输入正整数(即它们的绝对值),我应该怎么用最简单的方法呢?
我可以很好地输入列表中的所有数字,然后一个接一个地将它们转换为绝对值,但是它们是更好的方法吗?

iugsix8n

iugsix8n1#

一旦你明白 map(func, iterable) 函数执行:它调用函数 func 在给定的 iterable ,并返回包含结果的迭代器。这相当于这样做:

def my_map(func, iterable):
    for item in iterable:
        yield func(item)

那么如何得到绝对整数值呢?改变什么 func 做!
定义函数和 map 对此:

def absint(x):
    return abs(int(x))

list(map(absint, input().split()))

定义一个lambda函数 abs 以及 int :

list(map(lambda x: abs(int(x)), input().split()))

1和2本质上是一样的,我不认为两者在性能上有什么不同。

t3psigkw

t3psigkw2#

使用列表理解:

[abs(int(x)) for x in input().split()]

相关问题