2016-05-23 6 views
0

Я сделал скрипт на языке python, который принимает входные данные: имя класса и сохраняет их в массиве, таком как students = [['name', 93.3]]. Он принимает список нескольких студентов, сортирует их по возрастанию, а затем распечатывает их сортировку. Я новичок в программировании, поэтому я не могу не чувствовать, что есть более простой способ сделать это, или, может быть, я ошибаюсь, и это почти так, как это делается.Было ли необходимым, чтобы я сделал свою собственную функцию сортировки?

def SortList(aList): 
    myList = list(aList) 
    secSmallest = [] 
    #sorting 
    for x in range(len(myList)-1): 
     for _ in range(len(myList)-1): 
      if myList[x][1] > myList[x+1][1]: 
       smaller = myList[x+1][1] 
       smallerName = myList[x+1][0] 
       larger = myList[x][1] 
       largerName = myList[x][0] 
       myList[x][1] = smaller 
       myList[x][0] = smallerName 
       myList[x+1][1] = larger 
       myList[x+1][0] = largerName 
       element = x 
       for _ in range(x): 
        if myList[element][1] < myList[element-1][1]: 
         smaller = myList[element][1] 
         smallerName = myList[element][0] 
         larger = myList[element-1][1] 
         largerName = myList[element-1][0] 
         myList[element][1] = larger 
         myList[element][0] = largerName 
         myList[element-1][1] = smaller 
         myList[element-1][0] = smallerName 
         element -= 1 
        else: 
         break 
      else: 
       break 
    return myList 
+2

Как правило, для сортировки пользовательских типов данных создайте 'class', затем реализуйте функцию сравнения, а затем используйте метод' sorted', который будет принимать список этих объектов класса. Или, поскольку это Python, используйте лямбды. –

+1

Самый простой способ сделать это - сортировать (aList) '. Хотя по-прежнему стоит реализовать алгоритм сортировки. Хорошая практика и очень образовательная. – DJMcMayhem

ответ

4

Вы можете использовать сортировку-метод:

students = [['name', 93.3]] 
students.sort(key=lambda element: element[1]) # sort by score ascending 
+1

Стоит упомянуть, 'reverse = True' будет делать спуск –

0

Легкий способ сделать это в Python является использование языка Python собственную функцию сортировки.

from operator import itemgetter 
sorted_list = sorted(aList, key=itemgetter(1)) 

Однако это хорошо для вашей собственной выгоды, которые вы пытались осуществить сортировку самостоятельно, хотя, кажется, что ваш алгоритм может использовать некоторые польский. Попробуйте прочитать около bubble sort, если вы хотите попробовать и выполнить простой алгоритм сортировки самостоятельно.

Смежные вопросы