当前位置: 首页 > 知识库问答 >
问题:

python:在没有内置排序、最小值、最大值函数的情况下对数字列表进行排序

万英武
2023-03-14

如果我有一个每次长度都不同的列表,我想从最低到最高排序,我会怎么做?

如果我有:[-5,-23,5,0,23,-6,23,67]

我想要:[-23,-6,-5,0,5,23,23,67]

我从这个开始:

data_list = [-5, -23, 5, 0, 23, -6, 23, 67]

new_list = []

minimum = data_list[0]  # arbitrary number in list 

for x in data_list: 
  if x < minimum:
    minimum = value
    new_list.append(i)

但这只发生一次,我得到了:

new_list = [-23] 

这就是我卡住的地方。

我如何继续循环,直到len(新列表)=len(数据列表)(即所有数字都在新列表中),而不使用内置的max、min、sort函数对所有数据进行排序?我也不确定是否有必要创建一个新的列表。

共有3个答案

郭远
2023-03-14

以下是我一直在尝试的东西。(插入排序-不是排序的最佳方式,但确实有效)

def sort(list):
    for index in range(1,len(list)):
        value = list[index]
        i = index-1
        while i>=0:
            if value < list[i]:
                list[i+1] = list[i]
                list[i] = value
                i -= 1
            else:
                break
印晋
2023-03-14
l = [64, 25, 12, 22, 11, 1,2,44,3,122, 23, 34]

for i in range(len(l)):
    for j in range(i + 1, len(l)):

        if l[i] > l[j]:
           l[i], l[j] = l[j], l[i]

print l

输出:

[1, 2, 3, 11, 12, 22, 23, 25, 34, 44, 64, 122]
宋育
2023-03-14

我猜你是想做这样的事情:

data_list = [-5, -23, 5, 0, 23, -6, 23, 67]
new_list = []

while data_list:
    minimum = data_list[0]  # arbitrary number in list 
    for x in data_list: 
        if x < minimum:
            minimum = x
    new_list.append(minimum)
    data_list.remove(minimum)    

print new_list
 类似资料:
  • 问题内容: 我有一个包含以下详细信息的列表: 现在,我想对该列表进行排序,以使这些值按以下顺序排列: 显然,这样做并不能给出正确的答案-它给出了: 我假设这是因为python直接将所有这些都视为字符串。但是,我想根据它们的数值FIRST对它们进行排序,然后根据数字后面的字符对它们进行排序。 我该如何进行? 非常感谢 :) 问题答案: 您想使用 自然排序 : 用法示例: 通过将元素拆分为多个列表以分

  • 我目前有一个应用程序,可以显示1.5公里半径内附近的医院,它看起来是这样的: 我遇到的麻烦是,我不知道如何根据他们从最低到最高的计算距离来排序卡片。 我创建了一个来存储计算的距离列表,并用对其进行排序。 我如何确保小部件将遵循排序的距离值的顺序?

  • 问题内容: 考虑这种字典格式。 我希望字典首先按下载进行排序,然后对所有没有下载的项目按日期进行排序。显然,字典无法排序,我只需要列出可以迭代的键即可。 我已经可以使用来按任一值对列表进行排序,但是如何也按第二个值对列表进行排序? 问题答案: 将参数用于。它允许您指定一个函数,给定要排序的实际项目,该函数将返回一个应作为排序依据的值。如果此值为元组,则其排序方式类似于元组排序- 按第一个值,然后按

  • 问题内容: 我正在寻找python中整数的最小值和最大值。例如,在Java中,我们有和。python中是否有类似的东西? 问题答案: Python 3 在Python 3中,此问题不适用。普通int类型是无界的。 但是,你实际上可能正在寻找有关当前解释器的字长的信息,在大多数情况下,该信息将与机器的字长相同。该信息在Python 3中仍以形式提供,这是一个有符号的单词可以表示的最大值。等效地,它是

  • 我有一个pandas数据帧(df),我需要根据列值的计数对其进行排序。列的值是字符串。 例如,目标列的值为橙色、苹果色、香蕉色和桃色。单个计数(df['fruit'].value_counts())为: 香蕉2678 桃2250 橙色1765 苹果1691 结果我需要根据这些计数对初始数据帧(包括所有列等)进行排序。因此,在前2678行中,水果列中的值应为香蕉等

  • 我希望根据记录的整数值降序排序: