如何将生成器对象转换为列表?
How to convert generator object into list?
我的代码
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.I 中写入的特定行找到解决方案
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
要将生成器表达式转换为列表,只需执行以下操作:
list(<generator expression>)
请注意,如果生成器表达式可以生成无限列表,您将不会得到您期望的结果。
我的代码
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.I 中写入的特定行找到解决方案 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
要将生成器表达式转换为列表,只需执行以下操作:
list(<generator expression>)
请注意,如果生成器表达式可以生成无限列表,您将不会得到您期望的结果。