在循环外使用生成器

时间:2013-09-01 20:20:46

标签: python python-3.x generator

相对较新的python所以请原谅新手问题,但Google目前没有帮助。

我有100个非常大的xlsx文件,我需要从中提取第一行(特别是单元格A2)。我发现这个名为openpyxl which will iterate through my data files的工具的宝石没有加载内存中的所有东西。它使用generaotor来获得每次调用的相关行

我无法得到的是如何在循环外初始化生成器。现在我的代码是:

from openpyxl import load_workbook
wb = load_workbook(filename = "merged01.xlsx", use_iterators= True)
sheetName = wb.get_sheet_names()
ws = wb.get_sheet_by_name(name = sheetName[0])
row = ws.iter_rows() #row is a generator
for cell in row:
    break
print (cell[1].internal_value) # A2

但必须有一种更好的方法,例如:

...
row = ws.iter_rows() #row is a generator
cell = row.first # line I'm trying to KISS
print (cell[1].internal_value) # A2

2 个答案:

答案 0 :(得分:8)

cell = next(row)

next函数从任何迭代器中检索下一个值。

答案 1 :(得分:5)

您正在寻找next()

cell = next(row)