将列表推导式转化为 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]
我想将列表理解代码 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]