是否有可能从一个列表理解返回两个列表? 那么,这显然是行不通的,但这样的:
rr, tt = [i*10, i*12 for i in xrange(4)]
所以rr
和tt
都是与搜索结果列表,从i*10
和i*12
分别。 非常感谢
是否有可能从一个列表理解返回两个列表? 那么,这显然是行不通的,但这样的:
rr, tt = [i*10, i*12 for i in xrange(4)]
所以rr
和tt
都是与搜索结果列表,从i*10
和i*12
分别。 非常感谢
>>> rr,tt = zip(*[(i*10, i*12) for i in xrange(4)])
>>> rr
(0, 10, 20, 30)
>>> tt
(0, 12, 24, 36)
根据我的测试,创建了两个内涵名单胜(至少对于长列表)。 要注意的是, 最好的答案投票甚至是慢慢于传统的for循环。 List内涵是更快,更清晰 。
python -m timeit -n 100 -s 'rr=[];tt = [];' 'for i in range(500000): rr.append(i*10);tt.append(i*12)'
10 loops, best of 3: 123 msec per loop
> python -m timeit -n 100 rr,tt = zip(*[(i*10, i*12) for i in range(500000)])'
10 loops, best of 3: 170 msec per loop
> python -m timeit -n 100 'rr = [i*10 for i in range(500000)]; tt = [i*10 for i in range(500000)]'
10 loops, best of 3: 68.5 msec per loop
这将是很好看的理解支持名单在同一时间多个列表的创建。
这是可能的列表理解返回多个列表,如果该元素是列表。 因此,例如:
>>> x, y = [[] for x in range(2)]
>>> x
[]
>>> y
[]
>>>
与诀窍zip
功能将做的工作,但实际上是更简单,可读,如果你只是收集列出了结果与循环。