温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python嵌套方法怎么使用

发布时间:2021-12-18 14:37:32 来源:亿速云 阅读:192 作者:iii 栏目:大数据

本篇内容主要讲解“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嵌套方法怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI