python - 如何将字符串格式的嵌套列表转换为列表(递归或迭代方式)
问题描述
我有这个字符串"[1,[2,3],[4,5,6],[7,[8,90],10],[11,120,[13]]]"
作为输入。如何使用递归或迭代将此字符串转换为列表,但在 Python 中不导入?
这是我尝试过的。此解决方案仅适用于"[1,[2,3]]"
我输入的字符串部分。
预期的输出是[1,[2,3],[4,5,6],[7,[8,90],10],[11,120,[13]]]
l = "[1,[2,3],[4,5,6],[7,[8,90],10],[11,120,[13]]]"
def convert(l,out=[],i=0):
while i<len(l)-1:
if l[i] == "]":
return out,i
if l[i] =="[":
out_to_add,index = convert(l[i+1:],[])
out.append(out_to_add)
i+=index
elif l[i]!=",":
out.append(l[i])
i+=1
print(convert(l)[0][0])
编辑:注意。这是一项任务,不允许导入
解决方案
更短的无导入解决方案:
l = "[1,[2,3],[4,5,6],[7,[8,90],10],[11,120,[13]]]"
def to_list(d):
while d and (n:=d.pop(0)) != ']':
if n == '[':
yield list(to_list(d))
elif n.isdigit():
yield int(n+(x:=lambda :'' if not d[0].isdigit() else d.pop(0)+x())())
print(next(to_list(list(l))))
输出:
[1, [2, 3], [4, 5, 6], [7, [8, 90], 10], [11, 120, [13]]]
推荐阅读
- wpf - wpf datagrid itemscontrol gridsplitter dont move
- c++ - Bit masking and bit manipulation
- python - How can I do an efficient in-place sort on an arbitrary indexable collection?
- r - Getting the Total counts in each sample of a huge single cell dataframe
- php - array_filter() 和 strlen 函数中的问题
- azure - Azure Notification Hub cannot send push notification to specific Tag
- c++ - 即使已安装 Azure 管道也不使用指定的编译器
- hibernate - how to get queries from jpa-named-queries.properties
- javascript - 什么时候关闭mongodb中的连接?
- python - Django Like Syste --> RedirectView 不重定向到帖子