在Python中有什麼方法可以從理解中返回多個列表?從python中的理解返回多個列表
我想要做的東西的影響:
x,y = [i,(-1*j) for (i,j) in enumerate(range(10))]
# x = [0 .. 9]
# y = [0 .. -9]
這是一個愚蠢的例子,但我只是想知道,如果這是可能的。
在Python中有什麼方法可以從理解中返回多個列表?從python中的理解返回多個列表
我想要做的東西的影響:
x,y = [i,(-1*j) for (i,j) in enumerate(range(10))]
# x = [0 .. 9]
# y = [0 .. -9]
這是一個愚蠢的例子,但我只是想知道,如果這是可能的。
可以跳過列表理解:
>>> 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)]))
注意:'range'只返回Py2上的'list';在Py3上,它是一個特殊的'range'對象,它需要被包裝在'list'構造函數中以創建一個實際的,可變的'list'。但是,是的,如果問題與給定的一樣簡單,那麼最好避免生成配對值的複雜性,並在更容易直接生成非配對值時解除配對。如果不需要可變性,使用原始的Py3'range'通常會比可變的'list'好(即使你不需要可變性,Py2'xrange'也不如直接替換的好) )。 – ShadowRanger
也許,但我不能想想爲什麼你會想要的實際原因。 – IanAuld
@IanAuld你不能看到想要分開你的X和Y的實際理由? (也許是在某些圖書館中繪圖?) –
它可能會更具可讀性並且更易於維護。沒有必要把所有東西都放在一條線上。 – IanAuld