Python for循环迭代异常:括号索引收集结果不符预期
问题分析与解决
你的代码问题出在使用t.index(each)获取括号索引上——这个方法只会返回字符串中第一个匹配字符的位置。比如遍历到第二个(时,t.index('(')还是返回第一个(的索引0;遍历到最后一个)时,t.index(')')还是返回第一个)的索引11,这就导致结果重复且错误。
修正后的代码
t = "(= 2 (+ 4 5))" a = [] for idx, char in enumerate(t): if char in ('(', ')'): a.append(idx) print(t) print(a)
说明
用enumerate(t)可以同时遍历字符串的索引和对应字符,遇到括号时直接将当前索引idx加入列表,就能精准收集每个括号的位置,运行结果就是你预期的:
(= 2 (+ 4 5)) [0, 5, 11, 12]
内容的提问来源于stack exchange,提问作者Adras Baros
相关产品推荐
相关产品推荐

