欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 實(shí)現(xiàn)矩陣按對角線打印

 更新時間:2019年11月29日 09:26:19   作者:iamaline  
今天小編就為大家分享一篇python 實(shí)現(xiàn)矩陣按對角線打印,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

如下所示:

Description:
將一個矩陣(二維數(shù)組)按對角線向右進(jìn)行打印。(搜了一下發(fā)現(xiàn)好像是美團(tuán)某次面試要求半小時手撕的題)
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變?yōu)?,則保持不變,讓i變化。在確定開頭元素后,可通過設(shè)置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:#當(dāng)遍歷完(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]
]))

輸出:

變型: 由(0,0)開始向左打?。?/strong>

思路: 同樣考慮每條對角線開頭元素的index(i,j)。i從0開始遍歷,j也從0開始遍歷,首先考慮j的變化,若j變?yōu)閏ol-1,則保持不變,讓i變化。在找到開頭元素后,可通過設(shè)置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]
]))

輸出:

此問題還可以有多種變型,若從左下角,右下角按對角線打印等,只需要進(jìn)行簡單的修改即可實(shí)現(xiàn)。

以上這篇python 實(shí)現(xiàn)矩陣按對角線打印就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python如何利用re模塊正則表達(dá)式匹配ip地址

    python如何利用re模塊正則表達(dá)式匹配ip地址

    這篇文章主要介紹了python如何利用re模塊正則表達(dá)式匹配ip地址問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python將三維數(shù)組展開成二維數(shù)組的實(shí)現(xiàn)

    python將三維數(shù)組展開成二維數(shù)組的實(shí)現(xiàn)

    今天小編就為大家分享一篇python將三維數(shù)組展開成二維數(shù)組的實(shí)現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • python中for語句簡單遍歷數(shù)據(jù)的方法

    python中for語句簡單遍歷數(shù)據(jù)的方法

    這篇文章主要介紹了python中for語句簡單遍歷數(shù)據(jù)的方法,以一個簡單實(shí)例形式分析了Python中for語句遍歷數(shù)據(jù)的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • Python實(shí)現(xiàn)從URL地址提取文件名的方法

    Python實(shí)現(xiàn)從URL地址提取文件名的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)從URL地址提取文件名的方法,涉及OS模塊中basename方法的使用技巧,需要的朋友可以參考下
    2015-05-05
  • 使用python的pyplot繪制函數(shù)實(shí)例

    使用python的pyplot繪制函數(shù)實(shí)例

    今天小編就為大家分享一篇使用python的pyplot繪制函數(shù)實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Pandas封裝Excel工具類的方法步驟

    Pandas封裝Excel工具類的方法步驟

    本文主要介紹了Pandas封裝Excel工具類的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 基于Python+OpenCV實(shí)現(xiàn)自動掃雷功能

    基于Python+OpenCV實(shí)現(xiàn)自動掃雷功能

    相信許多人很早就知道有掃雷這么一款經(jīng)典的游(顯卡測試)戲(軟件),掃雷作為一款在Windows9x時代就已經(jīng)誕生的經(jīng)典游戲,從過去到現(xiàn)在依然都有著它獨(dú)特的魅力,所以本文小編給大家介紹了如何使用Python+OpenCV實(shí)現(xiàn)自動掃雷效果,感興趣的朋友可以參考下
    2023-12-12
  • python網(wǎng)絡(luò)編程學(xué)習(xí)筆記(一)

    python網(wǎng)絡(luò)編程學(xué)習(xí)筆記(一)

    這篇文章主要介紹了python網(wǎng)絡(luò)編程基礎(chǔ)知識,需要的朋友可以參考下
    2014-06-06
  • Python實(shí)現(xiàn)隨機(jī)生成算術(shù)題的示例代碼

    Python實(shí)現(xiàn)隨機(jī)生成算術(shù)題的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)隨機(jī)生成算術(shù)題的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-04-04
  • Python打印特殊符號及對應(yīng)編碼解析

    Python打印特殊符號及對應(yīng)編碼解析

    這篇文章主要介紹了Python打印特殊符號及對應(yīng)編碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05

最新評論