Как сделать сортировку, а затем подсортировать в списке в Python 3 с помощью пузырьковой сортировки - PullRequest
0 голосов
/ 28 февраля 2019

Я работаю над дополнительным вопросом для курса, который я прохожу.Предположим, у нас есть список, такой как mylist=[a1, b2, a3, c1, b1, a5, b3, c9].Я хочу использовать базовый Python без импорта чего-либо.Я хочу отсортировать список сначала по алфавиту, а затем по каждой букве сортировать по номеру.Таким образом, результатом будет список [a1, a3, a5, b1, b2, b3, c1, c9].Я реализую простую пузырьковую сортировку для чисел, но как мне отсортировать буквы (или, может быть, наоборот?)

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Попробуйте это:

mylist=["a20", "b2", "a1", "c1", "b1", "a10", "b3", "c9"]
sorted_list=[]
def fun(l):
    minn = l[0]
    for i in l:
        if i[0]<minn[0]:
            minn = i
        elif i[0] == minn[0]:
            if int(i[1:])<int(minn[1:]):
                minn = i
    l.remove(minn)
    return minn

for i in range(len(mylist)):
    sorted_list.append(fun(mylist))
print(sorted_list)

Результат:

['a1', 'a10', 'a20', 'b1', 'b2', 'b3', 'c1', 'c9']
0 голосов
/ 28 февраля 2019

Используйте sorted или list.sort с двумя клавишами:

my_list = ["a1", "b2", "a3", "c1", "b1", "a5", "b3", "c9"]
sorted(my_list, key=lambda x:(x[0], int(x[1:])))
# ['a1', 'a3', 'a5', 'b1', 'b2', 'b3', 'c1', 'c9']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...