python中的列表排序算法无法正常工作

python中的列表排序算法无法正常工作,python,Python,我使用以下函数以递增顺序对列表进行排序。但是,虽然我的函数适用于以下列表:[1,5,6,9,3]或[56,43,16,97,45],但它不适用于以下形式的列表:[20,10,1,3,50] 在这样的情况下,计算机似乎认为3>20和3>10和3在我得到的“排序”列表中正好在50(第二到最后)之前结束。更准确地说,我得到的结果是:[1,10,20,3,50] 这是我的密码: def function_sort(L): for j in range(len(L)): min=

我使用以下函数以递增顺序对列表进行排序。但是,虽然我的函数适用于以下列表:
[1,5,6,9,3]
[56,43,16,97,45]
,但它不适用于以下形式的列表:
[20,10,1,3,50]

在这样的情况下,计算机似乎认为3>20和3>10和3在我得到的“排序”列表中正好在50(第二到最后)之前结束。更准确地说,我得到的结果是:
[1,10,20,3,50]

这是我的密码:

def function_sort(L):

    for j in range(len(L)):
        min=j
        for i in range(j+1,len(L)):
           if L[i]<L[min]:
              min = i

        if(min != j):
            L[j],L[min] = L[min],L[j]

            print L
    return L
def函数_排序(L):
对于范围内的j(len(L)):
min=j
对于范围(j+1,len(L))中的i:

如果L[i]听起来你的列表是由字符串而不是整数组成的,那么你最终会得到排序的元素

通过举例说明,考虑以下内容:

>>> 10 < 2
False
>>> '10' < '2'
True

另外,我建议不要使用
min
作为变量名,因为它是一个内置函数。

听起来您的列表是由字符串而不是整数组成的,您最终会对元素进行排序

通过举例说明,考虑以下内容:

>>> 10 < 2
False
>>> '10' < '2'
True

另外,我建议不要使用
min
作为变量名,因为它是内置函数。

为什么不使用内置的
.sort()
方法?@Scironic:对我来说,这听起来是一个相当合理的编程练习。鉴于这是一个热门话题,我不能说我理解反对票,合理且表述清晰的问题。@NPE同意反对票,因为这是一个编程练习-如果可以的话。如果不是这样,那么Aribas缺少了一个相当明显的工具。无论哪种方式,如果这是一个练习,我认为应该说明。我运行了它,它完全像intendent一样工作(至少如果你交出一个int列表),为什么不使用内置的
.sort()
方法?@Scironic:对我来说,这听起来像是一个相当合理的编程练习。鉴于这是一个主题、合理且表述清晰的问题,我不能说我理解否决票。@NPE同意否决票,因为这是一个编程练习-如果可以的话。如果不是这样,那么Aribas缺少了一个相当明显的工具。无论哪种方式,如果这是一个练习,我认为应该加以说明。我对它进行了一次运行,它的工作方式完全类似于intendent(至少如果你交出一个int列表),或者使用
键进行排序,例如
L.sort(key=int)
或者使用
键进行排序,例如
L.sort(key=int)