gpt4 book ai didi

python - 如何从特定元素获取矩阵/网格的对角线元素?

转载 作者:行者123 更新时间:2023-12-01 01:10:42 24 4
gpt4 key购买 nike

我有一个由不同数字组成的 8x8 网格,我想获取包含给定起始位置的对角线元素。这是一个例子

l = [[str(randint(1,9)) for i in range(8)] for n in range(8)]

>> [
[1 5 2 8 6 9 6 8]
[2 2 2 2 8 2 2 1]
[9 5 9 6 8 2 7 2]
[2 8 8 6 4 1 8 1]
[2 5 5 5 4 4 7 9]
[3 9 8 8 9 4 1 1]
[8 9 2 4 2 8 4 3]
[4 4 7 8 7 5 3 6]
]

我将如何从位置 x=4 和 y=3 获取对角线(即该列表中的第四个列表和第五个元素)?所以我想要的对角线是 [5,2,6,4,4,1,3]。

最佳答案

根据xy的差值,可以计算对角线左上角项的行数和列数,并根据两个边界的较低者与起始行和列的较高者之间的差异:

def diagonal(m, x, y):
row = max((y - x, 0))
col = max((x - y, 0))
for i in range(min((len(m), len(m[0]))) - max((row, col))):
yield m[row + i][col + i]

这样:

m = [
[1, 5, 2, 8, 6, 9, 6, 8],
[2, 2, 2, 2, 8, 2, 2, 1],
[9, 5, 9, 6, 8, 2, 7, 2],
[2, 8, 8, 6, 4, 1, 8, 1],
[2, 5, 5, 5, 4, 4, 7, 9],
[3, 9, 8, 8, 9, 4, 1, 1],
[8, 9, 2, 4, 2, 8, 4, 3],
[4, 4, 7, 8, 7, 5, 3, 6],
]
print(list(diagonal(m, 4, 3)))

输出:

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

关于python - 如何从特定元素获取矩阵/网格的对角线元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54892732/

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