可以从列表理解返回两个列表?
是否有可能从列表理解返回两个列表? 那么,这显然不起作用,但像这样:
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)
如果元素是列表,则列表理解可能返回多个列表。 例如:
>>> x, y = [[] for x in range(2)]
>>> x
[]
>>> y
[]
>>>
使用zip
函数的技巧可以完成这项工作,但实际上,如果您只是通过循环收集列表中的结果,那么实际上它会更加简单易读。
根据我的测试,创建两个综合列表胜(至少对于长列表)。 请注意, 最好的投票答案比传统的for循环更慢 。 列表解析速度更快,更清晰 。
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
很高兴看到支持一次创建多个列表的理解列表。
链接地址: http://www.djcxy.com/p/53585.html上一篇: Possible to return two lists from a list comprehension?