将列表推导式转化为 for 循环

Turning a list comprehension into a for loop

我想将列表理解代码 trow=[left+right for left,right in zip(trow+y, y+trow)] 转换为 for 循环而不是列表理解。我试图进行此转换,但它不起作用。我将如何做到这一点?

For循环代码:

def PascalTriangle(n):
   trow = [1]
   y = [0]
   for x in range(n):
      print(trow)
      for left,right in zip(trow+y, y+trow):
        trow.append(left+right)
   return n>=1

PascalTriangle(6)

列表理解代码:

def PascalTriangle(n):
   trow = [1]
   y = [0]
   for x in range(n):
      print(trow)
      trow=[left+right for left,right in zip(trow+y, y+trow)]
   return n>=1

PascalTriangle(6)

输出:

[1]
[1, 1, 1]
[1, 1, 1, 1, 2, 2, 1]
[1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 2, 3, 4, 3, 1]
[1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 2, 3, 4, 3, 1, 1, 2, 2, 2, 3, 4, 3, 2, 3, 4, 4, 5, 7, 7, 4, 1]
[1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 2, 3, 4, 3, 1, 1, 2, 2, 2, 3, 4, 3, 2, 3, 4, 4, 5, 7, 7, 4, 1, 1, 2, 2, 2, 3, 4, 3, 2, 3, 4, 4, 5, 7, 7, 4, 2, 3, 4, 4, 5, 7, 7, 5, 5, 7, 8, 9, 12, 14, 11, 5, 1]

预期输出:

[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]

您可以使用临时列表来收集所有值:

def PascalTriangle(n):
    trow = [1]
    y = [0]

    for x in range(n):
        print(trow)
        line = []
        for left, right in zip(trow + y, y + trow):
            line.append(left + right)
        trow = line
    return n >= 1


PascalTriangle(6)

输出:

[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]