# -*- coding: utf-8 -*-
def triangles():
    yield [1]      # n = 0 第一行
    yield [1, 1]  # n = 1 第二行

    b, n, old = 0, 2, [1, 1] # 从第三行开始 n = 2

    newL = list(range(n + 1))
    while b < n:
        if b == 0:
            newL[0] = 1
        else:
            newL[b] = old[b] + old[b-1]
        b = b + 1
        if b == n:
            newL[n] = 1
            yield newL

            b, n, old = 0, n + 1, newL[::] # 初始化下一行需要的变量

            newL = list(range(n + 1))