gpt4 book ai didi

python - 在没有 isinstance() 的情况下递归列表列表

转载 作者:太空狗 更新时间:2023-10-30 00:24:36 25 4
gpt4 key购买 nike

我刚读过 "isinstance() considered harmful" ,这似乎是合理的。简而言之,它主张避免使用此功能。

好吧,刚才我碰巧正在编写一个程序,它接受结构化为树的输入,并且需要树的结构信息。没有时间实现 GUI,我强制用户将其写入配置文件(我知道这是一个糟糕的界面,但时间紧迫)。我的用户技术性很强,但不一定懂 python。我选择该文件将包含表示输入树的列表列表(列表列表等),最终元素是树的叶节点。我认为这比将字典的语法强加给用户要好得多。

我计划按以下方式递归解析列表(省略使用树的结构,让我们简化并假设必须在每个叶节点上调用 treatLeafNode()):

def parseTree(input):
if isinstance (input, list):
for item in input:
parseTree(item)
else:
treatLeafNode(item)

根据这篇文章,我想知道是否有一种简单的方法可以在不使用 isinstance() 的情况下对其进行递归...

有人知道吗?

最佳答案

您的情况属于我会使用 isinstance 的情况之一。你的数据结构是约束良好的,你需要区分列表和不是列表。使用 isinstance 来询问它是否是一个列表。你没有说,但我想字符串可能在你的树的叶子中,它们和列表一样是可迭代的,所以用鸭子类型的方式区分它们是很巧妙的。

关于python - 在没有 isinstance() 的情况下递归列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5882728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com