gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:38:02 24 4
gpt4 key购买 nike

所以我有一个 .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代码,因为我已经覆盖了它,尽管如此,下面给出的是代码示例(我我曾经用来对距离的随机列表进行排序),我必须对其进行修改以按价格升序对上述列表进行排序。希望这足够了。

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 重命名 PrintList ,并使用with statement这样文件就会自动关闭。

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

关于python - 如何在列表中实现选择排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37055731/

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