python - 如何将生成器对象转换为列表?

标签 python list generator

<分区>

我的代码

def yieldlines(thefile, whatlines):
  return (x for i, x in enumerate(thefile) if i in whatlines)

file1=open('/home/milenko/EDIs/site1/newst2.txt','r')
whatlines1 = [line.strip() for line in open('m1.dat', 'r')]

x1=yieldlines(file1, whatlines1)

print x1

我得到了

<generator object <genexpr> at 0x7fa3cd3d59b0>

我应该把列表放在哪里,或者我需要重写代码?

我希望我的程序写入文件并读取内容,以便针对 m1.dat 中写入的特定行。我找到了解决方案 Reading specific lines only (Python)

最佳答案

如果你真的需要一个列表,你可以这样做:

lst = list(generator_object)

但是,如果您只想遍历对象,则不需要列表:

for item in generator_object:
    # do something with item

例如,

sqr = (i**2 for i in xrange(10)) # <generator object <genexpr> at 0x1196acfa0>
list(sqr) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

sqr = (i**2 for i in xrange(10))
for x in sqr:
    print x,
# 0 1 4 9 16 25 36 49 64 81

关于python - 如何将生成器对象转换为列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35996253/

相关文章:

python - 时间序列数据中的峰谷

python - 两个序列中相同对象的计数

Python 字典详细信息

python - 为什么 b[ :]=a mutates list b?

python - 列出回调?

python - 在 Jupyter 笔记本中使用 PySpark 时如何包含外部 Spark 库

list - Haskell:我似乎无法在以下递归函数中将任何内容链接到我的累加器 - 谁能解释我在这里错在哪里?

python - 终止生成器表达式

python - 是否有内置方法(例如装饰器)在定义时实例化 Python 生成器?

python - 如何从可迭代的保持原始索引中枚举选定的元素?