通常,当我必须以这种方式输入空格分隔整数的列表时:
12 15 31 -12
我使用这个功能:
list(map(int, input().split()))
从而返回CCD_ 1。
但是,现在,如果出于某种原因,我必须只将数字输入为正整数(即它们的绝对值(,我应该如何以最简单的方式进行输入
我可以很好地输入列表中的所有数字,然后一个接一个地将它们转换为绝对值,但它们是更好的方法吗?
一旦了解了map(func, iterable)
函数的作用,这就很简单了:它在给定iterable
的每个元素上调用函数func
,并返回一个包含结果的迭代器。这相当于这样做:
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()))
- 定义一个调用
abs
和int
的lambda函数:
list(map(lambda x: abs(int(x)), input().split()))
1和2本质上是相同的,我不认为两者在性能上有任何差异。
使用列表理解:
[abs(int(x)) for x in input().split()]