Python實現二維陣列的對角線遍歷(傾斜遍歷)

2021-08-21 10:32:07 字數 2486 閱讀 3124

要完成的事情,就像下圖:

話不多說,直接上python實現**與結果展示:

# 輸出遍歷的索引與其對應的值

a =[[1

,2,3

],[4

,5,6

],[7

,8,9

]]n =len

(a)for i in

range

(n+n-1)

:for j in

range

(i+1):

k = i-j

if k=

0and j

print

("對應索引:"

,j,k,

" 對應值:"

情況如下:

原以為這一種的解決方式會和上一種的一樣的簡單,但是嘗試一下失敗了,只有乙個「曲線救國」的解決辦法:依據索引關係輸出結果

自己的python實現**與結果展示:

a =[[

1,2,

3],[

4,5,

6],[

7,8,

9]]# 得到下標索引

size =

len(a)

list_i =

# 第一索引

list_j =

# 第二索引正序

l1 =

# 第二索引逆序

for m in

range(2

*size-1)

:for n in

range

(m+1):

k = m-n

if k=

0and n

print

("第一索引i:\n"

, list_i)

print

("第二索引j:"

)for i in

range

(len

(list_j)):

a = list_j.pop(

)print

(l1,

"\n"*2

,"輸出結果如下:"

前輩jiaobuchong的python實現**與結果展示:

arr1 =[[

1,2,

3,4]

,[5,

6,7,

8],[

9,10,

11,12]

,[13,

14,15,

16]]for each_arr in arr1:

print

(each_arr)

tem_arr =

# 用來記錄陣列值

rows =

len(arr1)

cols =

len(arr1[0]

)def

isvalidindex

(x, n)

:return

(x >=

0and x < n)

# 每一行的每個值的陣列下標的差都一樣,

for i in

range

(cols *2-

1):# 共輸出 cols * 2 - 1 行

diff = cols - i -

1# 每一行的差

for j in

range

(cols)

:# 陣列中每乙個值的下標範圍是0到cols

k = j - diff # 通過乙個下標值計算另乙個下標值

if isvalidindex(k, rows)

:# 剩下就是判斷這些下標值是否滿足當前的情況, 這一步不怎麼好理解

對角線列印二維陣列問題

最近在網上看到這樣一道面試題 二維陣列 n n 沿對角線方向,從右上角列印到左下角如n 4 4 4二維陣列 列印順序 4 3 8 2 7 12 1 6 11 16 5 10 15 9 14 13 網上已經有各種解法,也有現成的程式,但是個人都不是很滿意,網路上的思路都不是很清晰。現在提供一種分析思路...

LeetCode二維陣列對角線遍歷

之前刷leetcode都是直接進題庫刷題,今天點開探索才發現還有這種模組化的入門教程,就開啟陣列與字串那塊開始學習。到二維陣列的時候,有一道練習題是這樣的 給定乙個含有 m x n 個元素的矩陣 m 行,n 列 請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。樣例輸入 1,2,3...

二維陣列查詢python實現

二維陣列查詢 劍指offer經典面試題 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列array m n 和乙個整數k,判斷陣列中是否含有該整數。比較最右邊一列第乙個元素array max 0 與目標數字k大小,存在以...