我目前有一个多维列表,我正试图从中提取第一列:
>>> print(data)
[['com.borderstylo.retrollect', '0', '0'], ['aabasoft.presents.goldprice', '0', '0'], ['aberl.vlc.light.mote', '0', '0']]
当我使用
sitelist = []
for row in data:
sitelist.append(row[0])
print(sitelist)
我得到下面的输出,这就是我想要的。你知道吗
['com.borderstylo.retrollect', 'aabasoft.presents.goldprice', 'aberl.vlc.light.mote']
但是,当我使用
sitelist = []
sitelist = (row[0] for row in data)
print(sitelist)
type(sitelist)
我得到下面的输出,这是一个生成器对象。什么是generator对象?为什么第一组代码返回与第二组不同的内容?两者看起来非常相似。你知道吗
<generator object <genexpr> at 0x001A9E10>
generator
非常感谢您的回复。在python的新手,但真的很想学习。你知道吗
python中的列表理解是使用
[]
创建的。 另一种方法是,在处理非常大的数据时,可以使用与理解相同的语法构造生成器,只使用()
。你知道吗因此,只需将
()
更改为[]
。你知道吗row[0] for row in data
给出一个生成器对象。这就像懒惰的评估。这意味着执行这个for循环并不是为了产生结果,而是创建了一个generator对象,该对象可用于在需要时一次执行for循环。这样做是为了在时间和记忆方面提高效率。你知道吗
当它括在括号中时,
sitelist = (row[0] for row in data)
被视为in expression,生成的生成器对象被存储(引用)在sitelist
。你知道吗当它被括在方括号中时,
sitelist = [row[0] for row in data]
它是一个列表。for循环立即被执行,一个列表被构造并存储(引用)在sitelist
。你知道吗有关python中迭代协议的更多信息,请参阅this answer。
然后探索python中的生成器。有许多文章/博客文章对生成器进行了不同程度的详细解释。你知道吗
相关问题 更多 >
编程相关推荐