python - 这2个for循环有什么区别?

标签 python for-loop

我目前有这个多维列表,我正在尝试从中提取第一列:

>>> 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 object <genexpr> at 0x001A9E10>
generator

非常感谢您的回复。 python 新手,但真的很想学习。

最佳答案

Python 中的列表推导式是使用 [] 创建的。 作为替代方案,在处理非常大的数据时,您可以使用与推导式相同的语法构造生成器,仅使用 ()

因此,只需将 () 更改为 [] 即可。

关于python - 这2个for循环有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43527451/

相关文章:

python - 如何应用参数/for循环

javascript - 需要一些帮助来解决这个循环

python - matplotlib 强制平移/缩放限制到 x 轴

python - 如何为 python NLTK 构建翻译语料库?

Python:确保 os.environ 和 sys.path 相等:web-requests、shell、cron、celery

java - 在 for 循环中更新列表值失败但在具有对象值的列表中成功

r - 按组和列的加权均值

python - 以更好的模式重写我的简单 Python 代码

python - Matplotlib 和 Numpy 数学

python - 如何在 Pandas 中绘制具有不同 x 值的多个系列?