堆叠发电机

Hof*_*ann 1 python generator

为了标记化文件,我有一个生成器,它会抛出文件的空白分隔部分,忽略换行符.

def parts(filename):
  file = open(filename, 'r')
  for line in file:
    for part in line.split():
      yield part
Run Code Online (Sandbox Code Playgroud)

现在,我想把它写成一个生成器理解 - 什么不起作用是:

p = (part for part in line.split() for line in file)
Run Code Online (Sandbox Code Playgroud)

要么

p = (part for part in (line.split() for line in file))
Run Code Online (Sandbox Code Playgroud)

后者吐出分割线而不是分割线的部分

ovg*_*vin 6

使用以下语法:

p = (part for line in file for part in line.split())
Run Code Online (Sandbox Code Playgroud)

生成器表达式中最外层的for循环是左边的.

  • +1,理解中的循环以与正常循环相同的顺序写入 (2认同)