从python中的comprehension返回多个列表

时间:2016-03-01 00:47:11

标签: python list-comprehension

Python中是否有任何方法可以从理解中返回多个列表?

我想做点什么:

x,y = [i,(-1*j) for (i,j) in enumerate(range(10))]
# x = [0 .. 9]
# y = [0 .. -9]

这是一个愚蠢的例子,但我只是想知道它是否可能。

2 个答案:

答案 0 :(得分:2)

x,y =zip(* [(i,(-1*j)) for (i,j) in enumerate(range(10))] )

你只需解压缩列表

xy = [(1,2),(3,4),(5,6)]
x,y = zip(*xy)
# x = (1,3,5)
# y = (2,4,6)

答案 1 :(得分:1)

您可以跳过列表理解:

>>> x,y=range(0,10), range(0,-10,-1)
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> y
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

或者你可以这样做:

>>> x,y=map(list, zip(*[(e,-e) for e in range(10)]))