我想发布有关嵌套列表的问题。
import re
string = '[5, 42, [19, 3, 5, [7, 7, 5]], 42, 3.14, [6,6,6,7], 2,71, 0,0]'
m = re.findall(r'(?<=\])\]', string)
print(m)
print(len(m))
我试着写一段代码,告诉我有多少&#34;等级&#34;清单有。为了做到这一点,我想让表达式匹配每次2个方括号是一个接一个。但是我必须指定lookbehind应该返回多少个字符。这不是很有用,因为id喜欢让它适用于任何给定的字符串和 &#34;(小于?=] *)]&#34; 不行。 任何人都可以建议解决这个问题吗?
答案 0 :(得分:3)
使用eval和递归:
>>> depth = lambda l: 1 + max(depth(x) for x in l) if type(l) is list else 0
>>> depth(eval(strng))
3
答案 1 :(得分:0)
这是一个可能计算嵌套级别的解决方案:
strng = '[5, 42, [19, 3, 5, [7, 7, 5]], 42, 3.14, [6,6,6,7], 2,71, 0,0]'
level = 0
cnt = 0
for c in strng:
if c == '[':
cnt+=1
elif c == ']':
cnt-=1
if cnt > 0:
level+=1
print (level)
见IDEONE demo。结果:3
。