使用自定义比较函数对列表列表进行排序

2023-12-06

我知道有几个这样命名的问题,但它们似乎对我不起作用。

我有一个列表列表,50 乘以 5 个元素。我想通过对每个元素应用自定义比较函数来对该列表进行排序。此函数计算元素排序所依据的列表的适合度。我创建了两个函数,比较和适应度:

def compare(item1, item2):
    return (fitness(item1) < fitness(item2))

and

def fitness(item):
    return item[0]+item[1]+item[2]+item[3]+item[4]

然后我尝试通过以下方式给他们打电话:

sorted(mylist, cmp=compare)

or

sorted(mylist, key=fitness)

or

sorted(mylist, cmp=compare, key=fitness)

or

sorted(mylist, cmp=lambda x,y: compare(x,y))

我还尝试了具有相同参数的 list.sort() 。但无论如何,函数都不会获取列表作为参数,而是获取None。我不知道为什么会这样,主要来自 C++,这与我对回调函数的任何想法相矛盾。如何使用自定义函数对此列表进行排序?

Edit我发现了我的错误。在创建原始列表的链中,一个函数不返回任何内容,但使用了返回值。抱歉打扰了


另外,您的比较功能不正确。它需要返回 -1、0 或 1,而不是您所拥有的布尔值。正确的比较函数是:

def compare(item1, item2):
    if fitness(item1) < fitness(item2):
        return -1
    elif fitness(item1) > fitness(item2):
        return 1
    else:
        return 0

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

使用自定义比较函数对列表列表进行排序 的相关文章

随机推荐

  • 背包C#实现任务

    我正在尝试在给定条件下编写背包 C 算法 但我总是遇到两个问题 我收到 索引超出数组范围 错误 或者我的结果仅为 0 我找到了几个 Knapsack 实现的代码示例 但无法弄清楚我做错了什么 代码示例 https www programmi
  • JS 库最佳实践:返回未定义或在错误的函数输入时抛出错误?

    当用 JavaScript 编写库时 处理函数无效输入的最标准 最友好 的方法是什么 我的直觉告诉我 返回 undefined 是完全可以的 但是抛出错误实际上更有帮助吗 还是真的不重要 我还可以看到返回 false null 甚至 1 但
  • 无法在 Windows 上使用 Android Studio 1.3.2 调试 NDK 示例

    我有Android Studio 1 3 2 NDK r10e gradle实验插件0 2 0 我已经克隆了ndk 样本仓库并仔细遵循以下说明NDK 预览 包括创建本机配置 当我选择 LLDB 作为调试器并调试 Teapot NDK 示例应
  • 在 webview 控件中显示本地 PDF 文件 - 显示空白 Pdf 文件

    我正在研究 Xamarin Forms UWP 我想在webview控件中显示本地PDF文件 我点击了这两个链接 https developer xamarin com recipes cross platform xamarin form
  • 右键单击停止传播

    如何停止 javascript 中右键单击事件的传播 以便父元素根本检测不到它们 当我单击以下 html 中的链接时 未检测到左键单击 但文档元素将右键单击检测为 单击 事件而不是 contextmenu 事件 我尝试将事件侦听器附加到 m
  • 如何才能完全禁用对assert()的调用?

    我的代码充满了对assert condition 在我使用的调试版本中g g这触发了我的断言 出乎意料的是 在我的发布版本中也触发了相同的断言 即没有编译的版本 g option 如何在编译时完全禁用断言 我应该明确定义NDEBUG在我生成
  • 具有 sql 转义的动态 mysql 查询是否与准备好的语句一样安全?

    我有一个应用程序 通过将动态 mysql 查询与 mysql mysqli 真实转义字符串结合使用 它将大大受益 如果我通过 mysql real escape 运行从用户收到的所有数据 它会和使用 mysql 准备好的语句一样安全吗 是的
  • 从 jQuery Mobile 重置值

    我需要重置我的页面的所有字段元素的值 这些元素是 输入 选择 组合框 复选框和单选组 搜索发现有如下代码 attr value input type checkbox attr checked false select each funct
  • 在 xslt 中添加一个或递增变量

    我想让计数器值根据条件递增 但我无法增加值或向全局变量加 1 我正在使用以下代码
  • Swift 扩展示例

    我本来想知道如何制作这样的东西 UIColor myCustomGreen 这样我就可以定义自己的颜色并在我的应用程序中使用它们 我之前研究过扩展 我认为我可能可以使用它们来解决我的问题 但我不记得到底如何设置扩展 在撰写本文时在 Goog
  • GAE (python) 中是否有与 Rails 的“flash”消息等效的东西?

    Ruby on Rails 有一种方法可以设置消息 例如flash notice and flash error 用户将在下一次机会看到 它对于在用户被重定向时 例如返回到登录页面 时通知用户登录失败等情况特别有用 在 Google App
  • 我应该在带有模板的主题观察者模式中使用动态转换吗

    通过参考文章使用模板实现主题 观察者模式 template
  • 5位数字可以表示的最大值和最小值是多少?以2的补码表示

    假设 2 的补码表示形式的 5 位数字可以表示的最大值和最小值是多少 我是否找到 5 位数字的最小值和最大值 即 00000 但我不确定最大值是多少 然后转换为二进制补码 这听起来很愚蠢 但这是我唯一能想到的 我的最后一个问题是 处理器中存
  • 将 erb 从数据库渲染到视图中问题请帮忙!

    我正在数据库中保存一些 erb 并将其呈现在视图中 如下所示 erb ERB new content render text gt erb result 我在尝试渲染 erb 时遇到错误 该 erb 中的 image tag 保存在数据库中
  • Firebase 身份验证对象可以处理同时身份验证类型吗?

    这个帖子描述如何将多个帐户绑定到一个帐户 uid in a users收藏 以下是这些安全规则 rules users uid write auth null data val null auth provider facebook aut
  • 有没有办法在Oracle数据库中创建自动递增的Guid主键?

    我主要使用 sql server 当我使用数据库时 并且我正在尝试学习 pl sql Oracle 中是否有相当于 sql server 自动生成的 Guid 作为主键的东西 您可以使用SYS GUID 生成 GUID 并将其用作列的默认值
  • 如何多次调用一个函数?

    我的问题是 我正在开发一个适合移动设备的网站 其中包含 2 个样式表 一个用于 面向 PC 的可视化 另一个用于移动可视化 除了 2 个 CSS 之外 我还需要一个函数来修改一些内容href从一种可视化模式切换到另一种可视化模式时菜单上的属
  • 尝试根据 JSON 字符串值动态设置图标

    我有一个位于服务器上的 JSON 格式的客户端配置 示例 JSON 类似于 icon facebook 我有下面的小部件 class MySocialIcons extends StatelessWidget MySocialIcons t
  • 为什么我的“公式”变量不会像电子表格中那样自动更新?如何重新计算该值?

    我注意到初学者经常犯以下简单的逻辑错误 由于他们确实不理解这个问题 a 他们的问题不能真正说是由拼写错误引起的 完整的解释会很有用 b 他们缺乏必要的理解 无法创建正确的示例 用正确的术语解释问题以及清楚地提问 因此 我代表他们要求制作一个
  • 使用自定义比较函数对列表列表进行排序

    我知道有几个这样命名的问题 但它们似乎对我不起作用 我有一个列表列表 50 乘以 5 个元素 我想通过对每个元素应用自定义比较函数来对该列表进行排序 此函数计算元素排序所依据的列表的适合度 我创建了两个函数 比较和适应度 def compa