我想知道如何获取不通过中心的对角线值列表。
我们说我有一个嵌套的列表:
L = [[1,2,3],[4,5,6][7,8,9]]
我怎么能得到对角线[2,6]?
答案 0 :(得分:0)
我不太确定你想要什么,但是这段代码为你提供了每个方向的所有完整对角线:
L = [[1,2,3],[4,5,6], [7,8,9]]
# number of rows, number of columns: ie L is m x n
m, n = len(L), len(L[0])
# Retreive the NE-SW (diag1) and NW-SE (diag2) diagonals
diag1 = []
diag2 = []
for p in range(m+n-1):
diag1.append([])
diag2.append([])
q1 = 0
if p >= n:
q1 = p - n + 1
q2 = m
if p < m-1:
q2 = p+1
for q in range(q1, q2):
x, y = p - q, q
diag1[-1].append(L[y][x])
# To get the other diagonal, read each row "backwards"
x = n - x - 1
diag2[-1].append(L[y][x])
print 'diag1:', diag1
print 'diag2:', diag2
那是:
diag1: [[1], [2, 4], [3, 5, 7], [6, 8], [9]]
diag2: [[3], [2, 6], [1, 5, 9], [4, 8], [7]]
答案 1 :(得分:0)
您将如何修改代码以接受具有以下特征的非m x n嵌套列表:len(L [i])&gt; LEN(L [I + 1])。
例如,以下嵌套列表:
[[1,2,3,4,5,6,7,8,9,10],
[11,12,13,14,15,16,17],
[18,19,20,21,22],
[23,24,25,26],
[27,28],
[29]]
应该产生:
[[1],
[2,11],
[3,12,18],
[4,13,19,23],
[5,14,20,24,27],
[6,15,21,25,28,29],
[7,16,22,26],
[8,17],
[9],
[10]