Python:对数组进行排序

时间:2013-07-02 21:52:14

标签: python

我有一个类,其唯一目的是对作为参数给出的数组进行排序,但首先,我得到一个错误“int not iterable”。我的问题是这个错误是什么,我正在进行正确的排序吗?谢谢。这是我的分拣机类,由下面的其他类调用。

class Sorter:
    def reverseWackySort(self, vals):
        i = 0
        j = 0
        temp = 0
        length = len(vals)
        for i in length:
            for j in (length -1):
                if vals[j] > vals[j+1]:
                    temp = vals[j]
                    vals[j] = vals[j+1]
                    vals[j+1] = temp;
        return vals

代码 -

from Sorter import Sorter

def TestSorter():
    rws = Sorter()


    nums = [88, 1, 7, 32, 18, 77, 34, 99, 54, 22]

    print "\nBefore Sort: ", nums

    rws.reverseWackySort(nums)

    print "After Sort:   {}\n".format(nums)

TestSorter()

1 个答案:

答案 0 :(得分:8)

您正在尝试迭代整数:

for i in length:
    for j in (length -1):

也许您想要迭代范围

for i in range(length):
    for j in range(length -1):

range()为您生成一系列整数(但不包括)length

请注意,您可以在Python中交换变量而无需临时中介:

vals[j], vals[j+1] = vals[j+1], vals[j]

并且您也不需要'预先声明'变量; i = 0j = 0temp = 0行是多余的。