最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

如下所示:

Description:
將一個(gè)矩陣(二維數(shù)組)按對(duì)角線(xiàn)向右進(jìn)行打印。(搜了一下發(fā)現(xiàn)好像是美團(tuán)某次面試要求半小時(shí)手撕的題)
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]]

思路: 考慮每條對(duì)角線(xiàn)開(kāi)頭元素的index(i,j)。i從0開(kāi)始遍歷,j從col-1開(kāi)始遍歷,首先考慮j的變化,若j變?yōu)?,則保持不變,讓i變化。在確定開(kāi)頭元素后,可通過(guò)設(shè)置i+1,j+1及不超過(guò)范圍來(lái)向lst中對(duì)角線(xiàn)上添加元素。

對(duì)于以上例子,各對(duì)角線(xiàn)開(kāi)頭元素的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用于方便同一對(duì)角線(xiàn)元素的添加,否則改變i,j影響開(kāi)頭元素的選擇
   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)開(kāi)頭的一條對(duì)角線(xiàn)后,讓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)開(kāi)始向左打印:

思路: 同樣考慮每條對(duì)角線(xiàn)開(kāi)頭元素的index(i,j)。i從0開(kāi)始遍歷,j也從0開(kāi)始遍歷,首先考慮j的變化,若j變?yōu)閏ol-1,則保持不變,讓i變化。在找到開(kāi)頭元素后,可通過(guò)設(shè)置i+1,j-1及不超過(guò)范圍來(lái)向lst中對(duì)角線(xiàn)上添加元素。

對(duì)于以上例子,各對(duì)角線(xiàn)開(kāi)頭元素的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用于方便同一對(duì)角線(xiàn)元素的添加,否則改變i,j影響開(kāi)頭元素的選擇
   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]
]))

輸出:

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

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

相關(guān)文章

  • 詳解Flask前后端分離項(xiàng)目案例

    詳解Flask前后端分離項(xiàng)目案例

    這篇文章主要介紹了Flask前后端分離項(xiàng)目案例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Python 使用 environs 庫(kù)定義環(huán)境變量的方法

    Python 使用 environs 庫(kù)定義環(huán)境變量的方法

    這篇文章主要介紹了Python 使用 environs 庫(kù)來(lái)更好地定義環(huán)境變量,本節(jié)我們以 Python 項(xiàng)目為例,說(shuō)說(shuō)環(huán)境變量的設(shè)置。通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 微信公眾號(hào)腳本-獲取熱搜自動(dòng)新建草稿并發(fā)布文章

    微信公眾號(hào)腳本-獲取熱搜自動(dòng)新建草稿并發(fā)布文章

    本來(lái)想寫(xiě)一個(gè)自動(dòng)化發(fā)布微信公眾號(hào)的小綠書(shū)的腳本,但是微信公眾號(hào)官網(wǎng)沒(méi)有小綠書(shū)的接口,那就寫(xiě)一個(gè)獲取熱搜微信普通文章的腳本吧,這篇文章主要介紹了微信公眾號(hào)腳本-獲取熱搜自動(dòng)新建草稿并發(fā)布文章
    2025-04-04
  • python中關(guān)于數(shù)據(jù)類(lèi)型的學(xué)習(xí)筆記

    python中關(guān)于數(shù)據(jù)類(lèi)型的學(xué)習(xí)筆記

    在本篇文章里小編給大家整理了關(guān)于python中關(guān)于數(shù)據(jù)類(lèi)型的學(xué)習(xí)筆記內(nèi)容,需要的朋友們可以參考下。
    2020-07-07
  • django中的*args 與 **kwargs使用介紹

    django中的*args 與 **kwargs使用介紹

    這篇文章主要介紹了django中的*args 與 **kwargs使用介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • matplotlib交互式數(shù)據(jù)光標(biāo)實(shí)現(xiàn)(mplcursors)

    matplotlib交互式數(shù)據(jù)光標(biāo)實(shí)現(xiàn)(mplcursors)

    這篇文章主要介紹了matplotlib交互式數(shù)據(jù)光標(biāo)實(shí)現(xiàn)(mplcursors),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python去除字符串前后空格的三種方法匯總

    Python去除字符串前后空格的三種方法匯總

    這篇文章主要給大家介紹了關(guān)于Python去除字符串前后空格的三種方法,需要的朋友可以參考下
    2023-01-01
  • 使用Python分析文本數(shù)據(jù)的詞頻并詞云圖可視化

    使用Python分析文本數(shù)據(jù)的詞頻并詞云圖可視化

    這篇文章主要給大家介紹了關(guān)于如何使用Python分析文本數(shù)據(jù)的詞頻并詞云圖可視化,文章中有詳細(xì)的圖文介紹和代碼示例,對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-09-09
  • Django REST framework視圖的用法

    Django REST framework視圖的用法

    這篇文章主要介紹了Django REST framework 視圖,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • pandas庫(kù)中to_datetime()方法的使用解析

    pandas庫(kù)中to_datetime()方法的使用解析

    這篇文章主要介紹了pandas庫(kù)中to_datetime()方法的使用解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評(píng)論

房产| 梓潼县| 观塘区| 隆林| 绿春县| 盘锦市| 遵义市| 阿鲁科尔沁旗| 达尔| 博罗县| 青岛市| 甘泉县| 灵寿县| 肇州县| 台中县| 甘泉县| 兰州市| 大英县| 米林县| 博湖县| 怀柔区| 珠海市| 东阿县| 东至县| 沙田区| 陕西省| 盐边县| 保康县| 寻乌县| 定兴县| 阳江市| 吉林市| 永德县| 明星| 绵阳市| 东至县| 灌南县| 江口县| 嘉义市| 永寿县| 克拉玛依市|