gpt4 book ai didi

python - 查找矩阵大对角线下方的所有元素

转载 作者:太空宇宙 更新时间:2023-11-04 01:45:50 25 4
gpt4 key购买 nike

我有一个如下所示的矩阵:

matrix = [
['a', 'p', 'p', 'l', 'e'],
['a', 'g', 'o', 'd', 'o'],
['n', 'n', 'e', 'r', 't'],
['g', 'a', 'T', 'A', 'C'],
['m', 'i', 'c', 's', 'r'],
['P', 'o', 'P', 'o', 'P']]

我正试图找到大对角线下方的所有元素。但我希望他们以某种方式,例如,理想的输出是:

["ocAt", "PsC","or","P"]

(我想要“向右上升对角线”方式的字母,这里的大对角线是“PiTro”)

我试过类似的东西:

    for f in range(len(matrix) - 1, -1, -1):
for k in range(len(matrix)-1, 0, -1):
my_list.append(matrix[k][k-f])

但是我要么得到一个超出范围的索引,要么得到的不是好的元素。如果有人有解决方案,我会很高兴知道!

最佳答案

这是实现该结果的一种方式:

matrix = [['a', 'p', 'p', 'l', 'e'],
['a', 'g', 'o', 'd', 'o'],
['n', 'n', 'e', 'r', 't'],
['g', 'a', 'T', 'A', 'C'],
['m', 'i', 'c', 's', 'r'],
['P', 'o', 'P', 'o', 'P']]
my_list = []
for f in range(1, len(matrix[0])):
s = []
for k in range(len(matrix[0]) - f):
s.append(matrix[len(matrix) - k - 1][f + k])
my_list.append(''.join(s))
print(my_list)
# ['ocAt', 'PsC', 'or', 'P']

或者使用理解:

my_list = [''.join(matrix[len(matrix) - i - 1][j + i] for i in range(len(matrix[0]) - j))
for j in range(1, len(matrix[0]))]

要生成每个对角线上的每个子字符串,您可以这样做:

my_list = []
for j in range(1, len(matrix[0])):
for i1 in range(0, len(matrix[0]) - j):
for i2 in range(i1 + 1, len(matrix[0]) - j + 1):
s = []
for i in range(i1, i2):
s.append(matrix[len(matrix) - i - 1][j + i])
my_list.append(''.join(s))
print(my_list)
# ['o', 'oc', 'ocA', 'ocAt', 'c', 'cA', 'cAt', 'A', 'At', 't', 'P', 'Ps', 'PsC', 's', 'sC', 'C', 'o', 'or', 'r', 'P']

或等效地:

my_list = [''.join(matrix[len(matrix) - i - 1][j + i] for i in range(i1, i2))
for j in range(1, len(matrix[0]))
for i1 in range(0, len(matrix[0]) - j)
for i2 in range(i1 + 1, len(matrix[0]) - j + 1)]

--

上对角线子串的一种解决方案:

my_list = []
for i in range(len(matrix)):
for j1 in range(min(i + 1, len(matrix[0]))):
for j2 in range(j1, min(i + 1, len(matrix[0]))):
s = []
for j in range(j1, j2 + 1):
s.append(matrix[i - j][j])
my_list.append(''.join(s))
print(my_list)
# ['a', 'a', 'ap', 'p', 'n', 'ng', 'ngp', 'g', 'gp', 'p', 'g',
# 'gn', 'gno', 'gnol', 'n', 'no', 'nol', 'o', 'ol', 'l', 'm',
# 'ma', 'mae', 'maed', 'maede', 'a', 'ae', 'aed', 'aede', 'e',
# 'ed', 'ede', 'd', 'de', 'e', 'P', 'Pi', 'PiT', 'PiTr', 'PiTro',
# 'i', 'iT', 'iTr', 'iTro', 'T', 'Tr', 'Tro', 'r', 'ro', 'o']

关于python - 查找矩阵大对角线下方的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59103247/

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