有一道算法題題目的意思是在二維數(shù)組里找到一個(gè)峰值。要求復(fù)雜度為n。
解題思路是找田字(四邊和中間橫豎兩行)中最大值,用分治法遞歸下一個(gè)象限的田字。
在用python定義一個(gè)二維數(shù)組時(shí)可以有l(wèi)ist和numpy.array兩種方式,看了幾篇python中二維數(shù)組的建立的博客發(fā)現(xiàn)大多都是建立的初始化的二維數(shù)組,而我需要通過(guò)文件讀取得到的是字符串,再把字符串轉(zhuǎn)換為二維數(shù)組,找不到解決方法還是決定自己來(lái)轉(zhuǎn)換。
首先,最開(kāi)始的字符串輸出如下,數(shù)字之間有空格
思路就是把先按換行符進(jìn)行切片,再對(duì)每一行的字符再進(jìn)行一次切片操作,代碼如下:
但事實(shí)上我在用"\n"來(lái)進(jìn)行切片的時(shí)候,在末尾留下一個(gè)""空的小尾巴,可能是文本中末尾也有一個(gè)換行符,所以我在第9行用list.pop()把空的元素去掉了。(window環(huán)境中不需要)
就這樣可以得到list的二維數(shù)組了,因?yàn)閚umpy。array支持比list更多的引索方式,我們用list = np.array(list)把list轉(zhuǎn)換為numpy.array最后結(jié)果如下:
到這里就完成轉(zhuǎn)換了,接下來(lái)就是寫算法解題了。總的來(lái)說(shuō)我還是對(duì)自己的方法不太滿意,如果有更加優(yōu)雅的轉(zhuǎn)換二維數(shù)組的方法請(qǐng)留言,不勝感激~
以上這篇python中字符串變二維數(shù)組的實(shí)例講解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/m0_37747541/article/details/79626239