map(函数,序列),其中函数返回两个值

Til*_*l B 4 python

查看以下Python代码:

def function(x):
    return x, x+1

sequence = range(5)

map(function, sequence)
Run Code Online (Sandbox Code Playgroud)

这回来了

[(0,1), (1,2), (2,3), (3,4), (4,5)]
Run Code Online (Sandbox Code Playgroud)

我想得到输出

[0, 1, 2, 3, 4], [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

这意味着,我想将函数的两个输出分成两个不同的列表.我可以在没有循环列表的情况下实现这一目标吗?

在实际代码中,我不会有整数列表,而是类实例.所以我可能会遇到一些复制/深度复制问题,我想避免这些问题.

Sav*_*era 8

希望这可以帮助:

>>> a = [(0,1), (1,2), (2,3), (3,4), (4,5)]
>>> zip(*a)
[(0, 1, 2, 3, 4), (1, 2, 3, 4, 5)]
Run Code Online (Sandbox Code Playgroud)

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