Discuss / Python / 实在想不出来

实在想不出来

Topic source

Super-String

#1 Created at ... [Delete] [Delete and Lock User]

GitHub Copilot: 以下是实现`triangles`函数的代码,用于生成杨辉三角的每一行:

```python

def triangles():

    L = [1]

    while True:

        yield L

        L = [1] + [L[i] + L[i+1] for i in range(len(L)-1)] + [1]

```

在这个函数中,我们使用了一个`while`循环来不断生成杨辉三角的每一行。首先,我们定义一个列表`L`,其中只包含一个元素`1`,表示杨辉三角的第一行。然后,我们使用一个`yield`语句来返回当前的列表`L`,表示生成了杨辉三角的一行。接着,我们使用列表生成式来生成下一行的列表,具体来说,我们首先在列表的开头添加一个元素`1`,然后使用`[L[i] + L[i+1] for i in range(len(L)-1)]`来生成中间的元素,即当前行的相邻两个元素之和,最后在列表的末尾添加一个元素`1`。这样就得到了下一行的列表。最后,我们将下一行的列表赋值给`L`,并继续循环,生成下一行的列表。

使用这个函数,可以不断生成杨辉三角的每一行,例如:

```python

n = 0

results = []

for t in triangles():

    results.append(t)

    n = n + 1

    if n == 10:

        break

for t in results:

    print(t)

```

这个代码将会输出杨辉三角的前十行,即:

```

[1]

[1, 1]

[1, 2, 1]

[1, 3, 3, 1]

[1, 4, 6, 4, 1]

[1, 5, 10, 10, 5, 1]

[1, 6, 15, 20, 15, 6, 1]

[1, 7, 21, 35, 35, 21, 7, 1]

[1, 8, 28, 56, 70, 56, 28, 8, 1]

[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]

大头金鱼

#2 Created at ... [Delete] [Delete and Lock User]
def triangles(max):
  n, a, b = 0, [1], [1,1]
  while n<max:
    yield a
    a, b = b, [1]+[b[i]+b[i+1] for i in range(len(b)-1)]+[1]
    n = n + 1
  return 'Done'

  • 1

Reply