map(function, sequence) 当函数返回两个值时
看看下面的Python代码:
def function(x):
return x, x+1
sequence = range(5)
map(function, sequence)
这段代码返回了
[(0,1), (1,2), (2,3), (3,4), (4,5)]
我想得到的输出是
[0, 1, 2, 3, 4], [1, 2, 3, 4, 5]
这意味着,我想把函数的两个输出分别放到两个不同的列表里。我能在不使用循环的情况下做到这一点吗?
在实际的代码中,我不会使用整数列表,而是使用类的实例。所以我可能会遇到一些复制或深复制的问题,我希望能避免这些问题。
3 个回答
1
另一种方法是:
>>> seq = range(5+1)
>>> a = [seq[:-1], seq[1:]]
>>> a
[[0, 1, 2, 3, 4], [1, 2, 3, 4, 5]]
3
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如,有人可能在使用某个库时,发现它的某个功能没有按照预期工作。这时候,我们就需要去查找相关的资料,看看有没有人遇到过类似的问题,或者有没有解决方案。
在StackOverflow上,很多人会分享他们的经验和解决办法。你可以在这里找到很多有用的信息,帮助你解决编程中的难题。记得在提问之前,先搜索一下,看是否已经有类似的问题被解答过,这样可以节省时间,也能让你更快找到答案。
总之,遇到问题时,不要着急,先查找资料,看看别人是怎么解决的,很多时候你会发现其实问题并不复杂。
>>> a = zip(*map(function, sequence))
>>> for i in a: print(i)
...
(0, 1, 2, 3, 4)
(1, 2, 3, 4, 5)
9
希望这能帮到你:
>>> a = [(0,1), (1,2), (2,3), (3,4), (4,5)]
>>> zip(*a)
[(0, 1, 2, 3, 4), (1, 2, 3, 4, 5)]