如何在列表中实现选择排序?

2023-11-29

所以我有一个.txt文件如下:

131,263.07
47,170.14
170,190.01
180,412.69
53,401.53

我必须读取该文件才能输出如下列表:

131 kms, $263.07
47 kms, $170.14
170 kms, $190.01
180 kms, $412.69
53 kms, $401.53

我使用的代码是:

def PrintList(table):
    for line in table:
       print(str(line[0]) + " kms, $" + str(line[1]))

file = open(input("Enter file name: ")) 

table = []
for line in file:
    line = line.rstrip().split(",")
    line[0] = int(line[0])
    line[1] = float(line[1])
    table.append(line)

PrintList(table)

file.close()

现在我想按价格升序对列表进行排序以获得:

47 kms, $170.14
170 kms, $190.01
131 kms, $263.07
53 kms, $401.53
180 kms, $412.69

我将如何在 Python 中实现这个?我尝试过使用这样做Selection Sort但它似乎不起作用。

Update:感谢您迄今为止的投入。但是,我尝试过排序功能,但我想弄清楚如何使用Selection Sort.

Update:我无法发布Selection Sort我已经使用过的代码,因为我已经覆盖了它,尽管如此,下面给出的是代码的示例(我用它来对距离的随机列表进行排序),我必须修改它以按价格递增的顺序对上述列表进行排序。希望这足够了。

def selectionSort(distance):
    n = len(distance)
    for i in range(n):
        minPlace = searchMin(distance)
        swap(distance, i, minPlace+i)

def searchMin(distance):
    minPlace = 0
    n = len(distance)
    for i in range(1, n):
        if distance[i] < distance[minPlace]:
            minPlace = i
        return minPlace

def swap(distance, i, j):
    temp = distance[i]
    distance[i] = distance[j]
    distance[j] = temp

如果有更简单的方法来实现这一点,请告诉我。提前致谢。干杯。


Python 列表带有一个sort方法已经有了。您可以简单地调用它,指定一个key确定如何排序的参数。

def print_list(table):
    for line in table:
       print(str(line[0]) + " kms, $" + str(line[1]))

with open(input("Enter file name: ")) as f:
    table = []
    for line in f:
        line = line.rstrip().split(",")
        line[0] = int(line[0])
        line[1] = float(line[1])
        table.append(line)

    table.sort(key=lambda line: line[1])
    print_list(table)

请注意,我对您的程序进行了一些额外的更改,即根据PEP8,并使用with陈述以便文件自动关闭。

如果坚持使用选择排序(它会比Python的默认排序更糟糕),请在实现以下接口的辅助函数中实现它sorted.

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

如何在列表中实现选择排序? 的相关文章

随机推荐

  • Angular 2 验证与子组件一起

    在父组件内我有一个子组件 两者都有其必填字段 最后 仅当两个组件都有效时 我才需要启用提交按钮 在这种情况下 所有必填字段均已填写 我怎样才能做到这一点 特别是使用模板驱动的验证 种子代码 父组件 Component selector pa
  • Internet Explorer 11 RGBA 拒绝工作

    我正在使用 IE 11 它拒绝使 rgba 在我的页面上工作 而 rgba 在某些网站上工作 我不明白为什么 My page note the rgba underlined with red 一些互联网页面 rgba 工作正常 显然 IE
  • 如何在 iOS 上的 Swift 中发布 CGDataProvider?

    我在 Swift 中有以下代码 func cropToAlpha image CGImage gt CGImage let pixelDataProvider CGDataProvider CGImageGetDataProvider im
  • 如何将服务器端 Jax-rs 调用与没有前缀的本机文件混合?

    我们目前正在使用 Jersey JAX RS 实现来处理 REST 请求 服务器端 Jersey 我们的 web xml 文件已配置为所有 rest 请求均由 Jersey 处理 没关系 我们的服务器目前是Tomcat6 并使用Java6
  • 在catalog.xml中为类别视图设置“列表/网格”默认视图模式

    我正在尝试让我的类别视图默认以列表或网格模式显示产品
  • 如何在android中的对话框中加载webview

    我正在尝试将网络视图加载到对话框中 我正在使用以下代码 final TextView seeMonthlyBill TextView parentLayout findViewById R id my ac my service timew
  • 如何从特定的IP地址发送电子邮件?

    我正在使用 cPanel CentOS 运行 vps 我想要动态地从 php 代码中选择要发送电子邮件的 IP 地址 我对任何奇怪的方式持开放态度 有什么办法可以做到这一点吗 我真的很感激一些清晰的想法 因为我不太擅长进出口和其他东西 附
  • Cckeditor 如何将键盘快捷键应用于特定样式

    是否可以将键盘快捷键应用于 CkEditor 中样式下拉列表中的特定样式 我搜索了他们的文档 但找不到适合我的案例的解决方案 这是屏幕截图 在这里 我希望能够将键盘快捷键应用到 样式 下拉列表中的黄色标记 任何帮助将不胜感激 谢谢 干得好
  • Azure Active Directory 和 WCF 身份验证

    我有 WCF 服务 我需要使用 Azure Active Directory 来保护它 我已经阅读了此处和social msdn 上的所有相关问题 但仍然无法让我的示例正常工作 我希望身份验证以以下方式工作 当用户从客户端调用 WCF 服务
  • 如何使用 Hyper 通过代理访问 HTTPS 站点?

    以下是通过代理访问 HTTPS 站点的尝试 extern crate hyper extern crate hyper native tls use hyper net HttpsConnector use hyper client Cli
  • 将 Bokeh 图嵌入 Flask 应用程序时遇到问题

    我对 Bokeh 和 Flask 都是新手 我浏览了相关问题 教程 并查看了 Bokeh 文档 但无法弄清楚我做错了什么 话虽这么说 我想创建一个简单的网络应用程序 在其中我将各种数据报告和图表 组合在一起 根据我读到的内容 我得出以下结论
  • Woocommerce 为特定用户禁用持久购物车

    我有一个 woocommerce 网站设置 其中我曾经为应答服务创建了特定用户 由于多个 客户 将使用这一帐户 因此我需要针对一个特定用户 ID 禁用 woocommerce 的持久购物车 这样如果两个操作员同时在不同的计算机上与两个不同的
  • React Router v6.0.0-alpha.5 历史记录道具删除 - 在反应上下文之外导航

    根据React Router最新的v6 0 0 alpha 5版本 history prop已被删除 https github com ReactTraining react router releases tag v6 0 0 alpha
  • 控制台应用程序中的 WPF 表单

    我正在运行一个控制台应用程序 该应用程序加载 dll 并调用该 dll 中的方法来创建 WPF 表单 所以我只是调用 Program Execute 方法 它会完成表单的所有创建 一切反映业务进展顺利 但表格没有出现 我听说了这是因为控制台
  • 如何仅使用角度指令将元素拖放到日历中

    我正在尝试使用角度指令实现拖放日历 日历使用 ui calendar https github com angular ui ui calendar Arshaw FullCalendar 的完整 AngularJS 指令 将元素拖放到日历
  • 未绑定通配符和原始类型之间的区别

    我正在阅读有关泛型的内容 但我不明白未绑定通配符的必要性以及它与原始类型有何不同 我读这个问题但还是没有搞清楚 在里面未绑定通配符的 Java 教程页面我得到了以下两点 但我不明白第一点 如果您正在编写一个可以使用提供的功能来实现的方法Ob
  • 从 jQuery 转换为 Vue?

    我想转换以下 JavaScript 代码 a click function this find i toggleClass fa heartbeat 在 vue js 中 函数名称 像 JavaScript 测试 https jsfiddl
  • “用户线程无法利用多线程或多处理”是什么意思? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 用户线程无法利用多线程或多处理来源 维基百科 这是否意味着 CPU 无法同时有效地执行多个用户线程 这是否意味着 CPU 无法在两个或多个用户线程之间切换 例如 有两个用户线程t0和
  • 禁用提交按钮会阻止表单提交 PHP / Javascript

    我认为我遇到了一个经典问题 但到目前为止我还没有找到可行的解决方案 我有一个表单 用户单击 发送 使用 PRG 模式并进行客户端和服务器端验证 一切正常 当任何用户 假设他输入了有效的输入 在服务器脚本结束执行之前快速单击多次时 就会出现问
  • 如何在列表中实现选择排序?

    所以我有一个 txt文件如下 131 263 07 47 170 14 170 190 01 180 412 69 53 401 53 我必须读取该文件才能输出如下列表 131 kms 263 07 47 kms 170 14 170 km