通常,当我必须以这种方式输入空格分隔的整数列表时:
12 15 31 -12
我使用这个函数:
list(map(int, input().split()))
这样它就回来了 [12, 15, 31, -12] .但是,现在,如果出于某种原因,我必须只输入正整数(即它们的绝对值),我应该怎么用最简单的方法呢?我可以很好地输入列表中的所有数字,然后一个接一个地将它们转换为绝对值,但是它们是更好的方法吗?
[12, 15, 31, -12]
iugsix8n1#
一旦你明白 map(func, iterable) 函数执行:它调用函数 func 在给定的 iterable ,并返回包含结果的迭代器。这相当于这样做:
map(func, iterable)
func
iterable
def my_map(func, iterable): for item in iterable: yield func(item)
那么如何得到绝对整数值呢?改变什么 func 做!定义函数和 map 对此:
map
def absint(x): return abs(int(x)) list(map(absint, input().split()))
定义一个lambda函数 abs 以及 int :
abs
int
list(map(lambda x: abs(int(x)), input().split()))
1和2本质上是一样的,我不认为两者在性能上有什么不同。
t3psigkw2#
使用列表理解:
[abs(int(x)) for x in input().split()]
2条答案
按热度按时间iugsix8n1#
一旦你明白
map(func, iterable)
函数执行:它调用函数func
在给定的iterable
,并返回包含结果的迭代器。这相当于这样做:那么如何得到绝对整数值呢?改变什么
func
做!定义函数和
map
对此:定义一个lambda函数
abs
以及int
:1和2本质上是一样的,我不认为两者在性能上有什么不同。
t3psigkw2#
使用列表理解: