lambda函数中匹配括号字符的索引?

时间:2017-08-20 22:52:20

标签: python lambda brackets

我比急需更好奇。是否可以传递lambda函数两个参数si。其中s是有问题的字符串,i是第一个括号的索引;并让它返回免费括号的索引?

我应该注意,它只需要用于括号(),而不是{}[]

例如

>>> f( '(() foo ) bar' , 0)
8

f由lambda函数

定义

编辑:我知道有很多方法可以找到匹配的括号。但是,我很好奇它是否可以简化为lambda表达式。

1 个答案:

答案 0 :(得分:4)

我太懒于担心角落案件,但使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="visit_daynight"> <div class="change_visit"> <a href="#"><img id="visit_image" src="" data-altSrc= "" width="350" height="350"></a> </div> </div>它相对简单:

itertools.accumulate

这可以通过跟踪字符串的高度来计算(计为+1和)为-1:

f = lambda s,i: next((i for i,x in enumerate(accumulate
    ({'(': 1, ')': -1}.get(c,0) for c in s[i:]), i) if not x), None)

In [31]: s = '(() foo ) bar'

In [32]: f(s, 0)
Out[32]: 8

In [33]: f(s, 1)
Out[33]: 2

In [34]: f(s, 2)