我比急需更好奇。是否可以传递lambda函数两个参数s
和i
。其中s
是有问题的字符串,i
是第一个括号的索引;并让它返回免费括号的索引?
我应该注意,它只需要用于括号()
,而不是{}
或[]
。
例如
>>> f( '(() foo ) bar' , 0)
8
f
由lambda函数
编辑:我知道有很多方法可以找到匹配的括号。但是,我很好奇它是否可以简化为lambda表达式。
答案 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)