gpt4 book ai didi

python - python中的矩阵乘法给出错误,我该如何克服这个问题?

转载 作者:太空宇宙 更新时间:2023-11-04 08:28:07 27 4
gpt4 key购买 nike

我正在尝试打印以下图案:

3 3 3 3 3
3 2 2 2 3
3 2 1 2 3
3 2 2 2 3
3 3 3 3 3

我的 python 代码是:

def pattern(n):
d = n + (n - 1)
l = [[0 for row in range(d)] for col in range(d)]
for a in range(0, n):
for i in range(a, d):
for j in range(a, d):
l[a][i][j].append(n)
d -= 1
n -= 1


print(pattern(3))

但我收到以下错误:

Traceback (most recent call last):
File "test.py", line 10, in <module>
print(pattern(3))
File "test.py", line 7, in pattern
l[a][i][j].append(n)
TypeError: 'int' object is not subscriptable

谁能指导我如何克服这个问题?

提前谢谢你。

最佳答案

因为有点难以理解您的代码应该如何做它应该做的事情(抱歉!),这里有一个非常 Pythonic 的方法来生成像这样的矩阵作为生成器函数。

def pattern(n):
size = n * 2 - 1
n_1 = n - 1
for y in range(size):
yield [max(abs(x - n_1), abs(y - n_1)) + 1 for x in range(size)]

我们的想法是,我们查看从 n - 1 生成的单元格的“距离”,它必须是网格的中心点(即 n * 2 - 1 项目宽和高)。

因为它是一个生成器函数,您可以通过调用例如从中获取列表列表列表(模式(大小))

这是一个示例程序 –

for size in range(1, 6):
print(size)
for row in pattern(size):
print(row)

——及其输出:

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

编辑:按照评论中的要求,这是一个简化版本,它不是生成器函数,也不使用列表理解:

def pattern_simple(n):
size = n * 2 - 1
n_1 = n - 1
rows = []
for y in range(size):
row = []
for x in range(size):
row.append(max(abs(x - n_1), abs(y - n_1)) + 1)
rows.append(row)
return rows

关于python - python中的矩阵乘法给出错误,我该如何克服这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55259340/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com