本篇内容主要讲解“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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。