为什么返回生成器对象列表?

时间:2016-05-26 14:15:12

标签: python tuples

假设我有一些代码:

visible

出于某种原因(尽管查看堆栈溢出)q仍然是生成器对象列表

a= {'first': 2, 'second': 3}
b = {'first':4, 'second': 6}
c=[a,b]
d = ['first', 'second']
q = [(item[col] for col in d) for item in c]

然而,当我只做一个基本的迭代时:

print q
[<generator object <genexpr> at 0x0000000002875750>, <generator object <genexpr> at 0x0000000002875798>]

我得到了预期的值:

x = []
for item in c:
y = []
for col in d:
    y.append(item[col])

x.append(tuple(y))

为什么第一种方式与第二种方式相同?我没有看到差异。谢谢 -

1 个答案:

答案 0 :(得分:0)

将行更改为:

q = [tuple(item[col] for col in d) for item in c]

parantheses符号创建generator。如果你想要一个元组,你需要明确说明。