您好,登錄后才能下訂單哦!
本篇內容主要講解“Python嵌套方法怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python嵌套方法怎么使用”吧!
題目:
給出一個字符串,其中只包含括號(大中小括號 “()[]{}” ),括號可以任意嵌套。如果同樣的左右括號成對出現并且嵌套正確,那么認為它是匹配的。例如:
1、() -> TRUE (匹配)
2、[()] -> TRUE (匹配,括號可以嵌套)
3、()() -> TRUE (匹配,括號可以并列排列)
4、({}([])) -> TRUE (匹配,括號可以任意嵌套,大括號不必在外)
5、) -> FALSE (不匹配,缺少左括號)
6、(} -> FALSE (不匹配,左右括號不一樣)
7、{)(} -> FALSE (不匹配,左右括號相反)
由于嵌套是隨意的,因此不能像剝洋蔥一樣從最外層剝
不管如何嵌套,總會有至少一對括號里面是不嵌套任何字符串的
遇到一個 ( 時,不可能去找與它對應的 ) ,因為 ) 很可能有多個,哪個是與之對應的呢,這個思路非常麻煩
有一種名為“棧”的數據結構,它的特點是先進后出,而list就可以偽裝成一個棧,利用先進后出的特性,將左右兩個括號抵消掉,文字已經不能解釋清楚了,還是上代碼吧
#coding=utf-8
str_value = '({}([]))'
lst = list(str_value)
lst_compare = []
b_format = True
for item in lst:
if item == '(' or item == '{' or item == '[':
lst_compare.append(item)
if len(lst_compare) == 0:
b_format = False
break
if item == ')':
if lst_compare[-1] == '(':
lst_compare.pop()
else:
b_format = False
if item == ']':
if lst_compare[-1] == '[':
lst_compare.pop()
else:
b_format = False
if item == '}':
if lst_compare[-1] == '{':
lst_compare.pop()
else:
b_format = False
if not len(lst_compare) == 0:
b_format = False
if b_format:
print u'格式正確'
else:
print u'格式錯誤'
首先要明白第二行所使用的lis方法的作用,它將字符串轉成一個list
對lst進行遍歷,將遍歷得到的各種左括號放入st_compare 中
在對lst進行遍歷過程中,如果遇到一種右括號,則和st_compare中末尾的元素比較,判斷他們是不是一對,如果是一對,則是用pop方法把st_compare末尾的元素彈出來,如果不是,就說明括號不是成對出現的
如果最終st_compare的長度不為0,就說明有一些左括號是沒有被抵消掉的,格式必然不正確
到此,相信大家對“Python嵌套方法怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。