使用python怎么實現矩陣按對角線打印-創新互聯

這期內容當中小編將會給大家帶來有關使用python怎么實現矩陣按對角線打印,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創新互聯建站自2013年起,是專業互聯網技術服務公司,擁有項目成都網站設計、做網站網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元羅城做網站,已為上家服務,為羅城各地企業和個人服務,聯系電話:18982081108

如下所示:

Description:
將一個矩陣(二維數組)按對角線向右進行打印。(搜了一下發現好像是美團某次面試要求半小時手撕的題)
Example:
Input:
[
[1,2,3,4],
[5,1,2,3],
[9,5,1,2]
]
Output:
[[4],
[3, 3],
[2, 2, 2],
[1, 1, 1],
[5, 5],
[9]]

思路: 考慮每條對角線開頭元素的index(i,j)。i從0開始遍歷,j從col-1開始遍歷,首先考慮j的變化,若j變為0,則保持不變,讓i變化。在確定開頭元素后,可通過設置i+1,j+1及不超過范圍來向lst中對角線上添加元素。

對于以上例子,各對角線開頭元素的index分別為:

(0,3)
(0,2)
(0,1)
(0,0)
(1,0)
(2,0)

其中各lst中的元素index分別為:

[(0,3)]
[(0,2),(1,3)]
[(0,1),(1,2),(2,3)]
[(0,0),(1,1),(2,2)]
[(1,0),(2,1)]
[(2,0)]

代碼:

def diagonal_right(matrix):
 if not matrix:
  return []
 row = len(matrix)
 col = len(matrix[0])
 col2 = col
 result = []
 for i in range(row):
  for j in range(col2 - 1, -1, -1): #j倒序遍歷
   lst = []
   i1,j1 = i,j #i1,j1用于方便同一對角線元素的添加,否則改變i,j影響開頭元素的選擇
   while i1 <= row - 1 and j1 <= col - 1:
    lst.append(matrix[i1][j1])
    j1 += 1
    i1 += 1
   result.append(lst)
   if i == 0 and j == 0:#當遍歷完(0,0)開頭的一條對角線后,讓j固定為0
    col2 = 1
 return('the result is: %s'%result,'end')
 
#test
print(diagonal_right([[1],[2]]))
print(diagonal_right([[1]]))
print(diagonal_right([
 [1,2,3,4],
 [5,1,2,3],
 [9,5,1,2]
]))

輸出:

使用python怎么實現矩陣按對角線打印

變型: 由(0,0)開始向左打印:

思路: 同樣考慮每條對角線開頭元素的index(i,j)。i從0開始遍歷,j也從0開始遍歷,首先考慮j的變化,若j變為col-1,則保持不變,讓i變化。在找到開頭元素后,可通過設置i+1,j-1及不超過范圍來向lst中對角線上添加元素。

對于以上例子,各對角線開頭元素的index分別為:

(0,0)
(0,1)
(0,2)
(0,3)
(1,3)
(2,3)

其中各lst中的元素index分別為:

[(0,0)]
[(0,1),(1,0)]
[(0,2),(1,1),(2,0)]
[(0,3),(1,2),(2,1)]
[(1,3),(2,2)]
[(2,3)]

代碼:

def diagonal_left(matrix):
 if not matrix:
  return []
 row = len(matrix)
 col = len(matrix[0])
 k=0
 result = []
 for i in range(row):
  for j in range(k,col): # j順序遍歷
   lst = []
   i1, j1 = i, j # i1,j1用于方便同一對角線元素的添加,否則改變i,j影響開頭元素的選擇
   while i1 <= row - 1 and j1 >=0:
    lst.append(matrix[i1][j1])
    j1 -= 1
    i1 += 1
   if i==0 and j==col-1:
    k=col-1
   result.append(lst)
 return ('the result is: %s' % result, 'end')

# test
print(diagonal_left([[1],[2]]))
print(diagonal_left([[1]]))
print(diagonal_left([
 [1,2,3,4],
 [5,1,2,3],
 [9,5,1,2]
]))

輸出:

使用python怎么實現矩陣按對角線打印

上述就是小編為大家分享的使用python怎么實現矩陣按對角線打印了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創新互聯成都網站設計公司行業資訊頻道。

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網頁名稱:使用python怎么實現矩陣按對角線打印-創新互聯
本文URL:http://m.kartarina.com/article18/cdcegp.html

成都網站建設公司_創新互聯,為您提供移動網站建設網站排名軟件開發面包屑導航網頁設計公司動態網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都seo排名網站優化
主站蜘蛛池模板: 国产在线精品无码二区二区 | 亚洲AV无码专区日韩| 国产嫖妓一区二区三区无码| 亚洲av无码片区一区二区三区| 久久久无码精品人妻一区| 无码内射中文字幕岛国片| 蕾丝av无码专区在线观看| 日韩欧精品无码视频无删节| 无码丰满熟妇juliaann与黑人 | 国产免费黄色无码视频| 无码八A片人妻少妇久久| 一区二区三区无码高清| 亚洲av午夜精品无码专区| 精品人妻系列无码人妻免费视频| 久久久久亚洲AV片无码下载蜜桃 | 无码人妻丰满熟妇啪啪网站| 人妻少妇伦在线无码| 中文字幕AV无码一区二区三区 | 亚洲AⅤ无码一区二区三区在线| 欧洲人妻丰满av无码久久不卡 | 国产精品无码成人午夜电影 | 午夜麻豆国产精品无码| 亚洲爆乳无码专区www| 亚洲AV无码国产在丝袜线观看| 国产日产欧洲无码视频无遮挡| 最新中文字幕av无码专区| 亚洲国产av高清无码| 无码人妻久久久一区二区三区| 国产成年无码AV片在线韩国| 中文无码AV一区二区三区| 中文字幕精品无码久久久久久3D日动漫 | 免费无码一区二区三区| 一本色道无码不卡在线观看| 无码精品人妻一区二区三区免费| 久久精品无码中文字幕| 亚洲AV无码成人精品区狼人影院| 无码粉嫩小泬无套在线观看| 久久水蜜桃亚洲AV无码精品| 无码射肉在线播放视频| 国产免费AV片无码永久免费| 国产精品无码MV在线观看|