【发布时间】:2015-03-14 03:15:37
【问题描述】:
a=[['1','3','2'],['11','22','33']]
k = [(float(a[i][j]) for j in range(0,3)) for i in range(0,2)]
>>> print k
[<generator object <genexpr> at 0x7f1a9d568f50>, <generator object <genexpr> at 0x7f1a9d568fa0>]
但我想得到 [(1,3,2),(11,22,33)] 为什么列表推导会产生生成器?
【问题讨论】:
-
因为
(float(a[i][j]) for j in range(0,3))是一个生成器表达式 -
因为你在里面放了一个生成器表达式?这就是
(... for j in range(0, 3))所做的。 -
[
at 0x7f1a9d568f50>, ...] 实际上是生成器的LIST。 -
从技术上讲,它是一个列表 .... 一个生成器列表。
标签: python generator list-comprehension