查看以下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]
这意味着,我希望将函数的两个输出分成两个不同的列表。我可以在没有遍历列表的情况下实现这一目标吗?
在实际代码中,我不会有整数列表,而是类实例。所以我可能会遇到一些复制/深度复制问题,我想避免这些问题。
答案 0 :(得分:8)
希望这会有所帮助:
>>> a = [(0,1), (1,2), (2,3), (3,4), (4,5)]
>>> zip(*a)
[(0, 1, 2, 3, 4), (1, 2, 3, 4, 5)]
答案 1 :(得分:3)
>>> a = zip(*map(function, sequence))
>>> for i in a: print(i)
...
(0, 1, 2, 3, 4)
(1, 2, 3, 4, 5)
答案 2 :(得分:1)
另一种方法是:
>>> seq = range(5+1)
>>> a = [seq[:-1], seq[1:]]
>>> a
[[0, 1, 2, 3, 4], [1, 2, 3, 4, 5]]