使用列表时出现“运行时错误:cmp 中超出最大递归深度”

2023-11-30

我遇到了错误RuntimeError: maximum recursion depth exceeded in cmp使用列表时。更确切地说,p0 in points, the points.index(p0)方法调用以及points.remove(p0)方法调用points列表已引发特定字典的错误p0在我的特定索引处points列表。这points发生错误时,列表包含 4700 个字典,从 12000 个对象的列表中将一个字典减少了一个,直到引发错误。这p0字典包含对列表中另一个字典的引用,该字典在返回中包含对p0目的。这p0字典以及它包含的引用在字典中出现两次points列出三个方法调用中的任何一个引发错误之前的列表。

这个错误从何而来?

EDIT:这是引发错误的代码。

for roadType in roadTypes:
    points = roadPoints[roadType][:]

    while len(roadTails[roadType]) > 0:
        p0 = roadTails[roadType].pop()

        p1 = p0['next']
        points.remove(p0) # Where the error occurs
        points.remove(p1)

        while True:
            p2 = find(p1, points, 0.01)

            if p2:
                points.remove(p2)

                p3 = p2['next']
                points.remove(p3)

                if p3 in roadTails[roadType]:
                    roadTails[roadType].remove(p3)
                    break
                else:
                    p0, p1 = p2, p3
                    continue

            else: break

这是定义find, where dist计算两点之间的距离。

def find(p1, points, tolerance = 0.01):
    for p2 in points:
        if dist(p2['coords'], p1['coords']) <= tolerance:
            return p2
    return False

这是错误的完整回溯:

Traceback (most recent call last):
  File "app.py", line 314, in <module>
    points.remove(p0) # Where the error occurs
RuntimeError: maximum recursion depth exceeded in cmp

也许你有一个循环结构,其中你的一个字典通过一系列指令引用自身'next's,像这样:

>>> a = {}
>>> b = {}
>>> a['next'] = b
>>> b['next'] = a
>>> a == b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: maximum recursion depth exceeded in cmp

如果打印出字典,循环引用将显示为...:

>>> a
{'next': {'next': {...}}}

也许这可以帮助找到字典中有问题的部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用列表时出现“运行时错误:cmp 中超出最大递归深度” 的相关文章

随机推荐

  • JQuery DataTables 库 ASP.NET MVC

    我想在我的 ASP NET MVC 5 项目中使用 jQuery DataTables 我确实使用了数据表并且它工作得很好 但问题是我必须手动设置过滤器和查询 而且我有一种感觉 我尝试在 mvc 中实现数据表的方式不太正确 是的 我确实得到
  • 我如何让 Delphi 知道我已经处理了异常?

    我已将 Application OnException 设置为自定义异常处理程序 以便我可以记录崩溃并提供退出选项 然而 我现在发现 即使在我已经处理过的异常上 它也会运行 例如 验证数字输入时出现的异常 有没有办法让自定义异常处理程序仅在
  • 使用 -rectypes 有哪些权衡?

    我问了一个问题 为什么我尝试进行函数链接不起作用 使函数在完成一些工作后返回自身 答案是 要使函数返回自身 您需要启用递归类型 rectypes 这让我很困惑 为什么这个功能隐藏在编译器标志后面 必须有充分的理由不默认启用它 所以我的问题是
  • 单独的输入和打印线程?

    我只是想知道如何在等待用户输入时打印文本 例如 如果我们在聊天应用程序中 我们有一个input 以便用户可以发送消息并print 接收消息时 它需要同时进行 我尝试使用线程 但它总是停在一个线程处 Example def receive c
  • 带索引的 Swift 访问数组给出以下错误。知道为什么吗?

    let index1 arc4random uniform 10 let x array index1 第二行给出以下错误 could not find an overload for subscript that accepts the
  • 如何更新通过SimpleCursorAdapter从数据库查询数据的ListView?

    我想使用 SimpleCursorAdapter 在列表视图中显示从数据库查询的项目 例如 数据库中可能有 20 000 个项目 我想只加载100个查询的项目 id 1 100 而不是加载所有项目 当滚动到listview的末尾时 加载另外
  • 如何使用 PHP 中数据库中的内容将 HTML 文件附加到电子邮件?

    如何通过 PHP 发送带有 HTML 文件附件的邮件 gt HTML 文件 代码 的内容在数据库中的字符串中 有没有一些简单的方法或免费脚本可以做到这一点 我不想将文件存储在本地 我需要从数据库中读取它并直接作为附件发送 不包含在正文中 如
  • 如何在 NSString 中使用 NULL 字符?

    在 PHP 中 我可以调用base64 encode x00 username x00 password 和 x00 代表 NULL 字符 现在 在 Objective C 中 我有一个函数可以将 NSData 转换为base64 编码的
  • 如何检查和重定向有线耳机和免提电话之间的音频? [复制]

    这个问题在这里已经有答案了 我正在开发一个简单的应用程序 应该toggle在扬声器电话和有线耳机之间 在按钮单击事件上播放音频 我正在尝试利用isWiredHeadsetOn 函数 但它表示 Android API lvl 5 及以上版本已
  • array_flip 以逗号分隔格式打印重复值

    我正在尝试使用array flip以逗号分隔的格式打印重复值 a array a gt red b gt green c gt blue d gt blue flip array flip a print r flip 我的输出是 Arra
  • 对于结构变量s1,s2,为什么我可以初始化“s1={25,3.5}”,将s2赋值为“s1=s2”,但不能使用“s1={59,3.14}”?

    在 C 中 如果一个结构变量的类型相同 我们可以将它们的值分配给其他变量 根据这一点 在我的以下程序中 我可以使用s1 s2当两者都是struct相同类型的变量 但是为什么我不允许使用s1 59 3 14 在那之后 我知道我们无法分配字符串
  • Android设置偏好类别的背景颜色

    我尝试自定义偏好类别的背景颜色 我已经更改了首选项本身的背景颜色 但我找不到如何更改类别背景颜色的方法 我找到了两种方法 但它们对我不起作用 更改首选项类别标签颜色背景 Through 这个链接 我发现this 但我尝试过的一切都对我不起作
  • 如何使用 cv::setMouseCallback

    我正在尝试在我的 c 项目中使用 cv setMouseCallback 我就是不明白 让我有一个类东西如何告诉这个类你有一个框架并在这个框架上运行 cv setMouseCallback 这是一个example我正在尝试做的事情 clas
  • 恒星支付查询

    我无法执行官方网站上的示例支付查询程序 这是我的代码 与示例几乎相同 这里是官方网站 public class TransCheck public static void main String args Server server new
  • 删除重复的对象

    var foo a 15 b 25 a 15 c 13 c 13 c 13 b 25 我想删除重复项 然后总结剩下的内容 所以上面会产生 a 15 b 25 c 13 给我53当我添加剩下的值时 我在这里看到了类似的东西 使用 JavaSc
  • 从 CSV 读取列并将其保存在 C 中的数组中不起作用。如何从数组内的所有值中删除引号

    仅供参考 这是一个编码项目 因此我无法更改电子表格 我必须将第 1 2 4 5 和 14 列保存在数组中 我打印了这些列 这就是输出 这是现在的输出 因为我需要将第 1 列和第 14 列转换为浮点数组 如何从所有列数组中删除引号 csv 中
  • 如何在 iPhone 中一次性向多个设备发送推送通知?

    我想向所有在应用程序中注册的设备发送相同的消息 但如何在不建立多个连接的情况下发送它们 我当前的 PHP 代码 ctx stream context create stream context set option ctx ssl loca
  • C# 日期格式丢失斜杠分隔符

    如果我在 C 中执行此操作 Console WriteLine DateTime Now ToString ddd M dd yy 我期望这样的输出 Wed 6 15 11 但它实际上输出的是 Wed 6 15 11 为什么斜线消失了 有没
  • 使用 Beautiful Soup 从非类部分获取数据

    我还是个新手 正在学习 python 和 beautiful soup 我一直困扰于如何从非类 HTML 片段中获取文本 这是我正在使用的 HTML 片段 section class userbody section
  • 使用列表时出现“运行时错误:cmp 中超出最大递归深度”

    我遇到了错误RuntimeError maximum recursion depth exceeded in cmp使用列表时 更确切地说 p0 in points the points index p0 方法调用以及points remo