gpt4 book ai didi

python - 使用多个条件对列表列表进行排序 (Python)

转载 作者:行者123 更新时间:2023-11-30 22:38:22 24 4
gpt4 key购买 nike

对于作业,我必须创建自己的排序算法来对包含足球比分的列表进行排序。

信息的格式如下(具有多个子列表,如下所示):

['Netherlands', 7, 6, 0, 1, 12, 6, 6, 18]

首先应根据索引 8 排序,然后如果索引 8 的数字相同,则应根据索引 7 排序,依此类推

我已经设法根据索引 8 对它进行排序,但之后就卡住了。所以我在这里使用选择排序:

def Sorting(List, sortVar):

for index in range(len(List)):
cur_pos = stats[index][sortVar]
high = List[index]
loc = index

for i in range(index,len(List)):
if stats[i][sortVar] > cur_pos:
cur_pos = List[i][sortVar]
high = List[i]
loc = i

temp = List[index]
List[index] = high
List[loc] = temp


print("")
print(List)
return List

在此之后我尝试了一些东西但陷入困境。可能是一个非常简单的问题,但我真的很挣扎。谢谢!

编辑:我看过一些解释这一点的帖子,但我不明白它们,而且它们都使用内置排序功能,而我不允许这样做......

最佳答案

这是一个basic bubble sort :

def bubble_sort(items):
""" Implementation of bubble sort """
for i in range(len(items)):
for j in range(len(items) - 1 - i):
if items[j] > items[j + 1]:
items[j], items[j + 1] = items[j + 1], items[j] # Swap!

这是修改后的冒泡排序。它只是在比较之前颠倒这两个项目。两个比较元素都必须理解 [::-1]:

def modified_bubble_sort(items):
for i in range(len(items)):
for j in range(len(items) - 1 - i):
# Reverse the lists before comparing them
if items[j][::-1] > items[j + 1][::-1]:
items[j], items[j + 1] = items[j + 1], items[j] # Swap!

效率不高,因为冒泡排序的时间复杂度为 O(n**2),并且修改后的版本不断反转相同的列表,但它非常清晰和简洁。

这是一个测试:

scores = [
['Netherlands', 7, 6, 0, 1, 12, 6, 6, 19],
['Netherlands', 7, 6, 0, 1, 12, 6, 6, 19],
['Netherlands', 7, 6, 0, 1, 12, 6, 7, 18],
['Netherlands', 7, 6, 0, 1, 12, 6, 6, 18],
['Spain', 7, 6, 0, 1, 12, 6, 7, 18]
]

modified_bubble_sort(scores)
print(scores)

请注意,它修改了原始列表。它输出:

[['Netherlands', 7, 6, 0, 1, 12, 6, 6, 18], ['Netherlands', 7, 6, 0, 1, 12, 6, 7, 18], ['Spain', 7, 6, 0, 1, 12, 6, 7, 18], ['Netherlands', 7, 6, 0, 1, 12, 6, 6, 19], ['Netherlands', 7, 6, 0, 1, 12, 6, 6, 19]]

这与以下结果相同:

print(sorted(scores, key=lambda l: l[::-1]))

关于python - 使用多个条件对列表列表进行排序 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43587947/

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