map(function, sequence) 当函数返回两个值时

4 投票
3 回答
1231 浏览
提问于 2025-04-16 23:18

看看下面的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)]

http://docs.python.org/library/functions.html#zip

撰写回答