如何使用冒泡排序在Python 3中对列表进行排序然后进行子排序

时间:2019-02-28 01:51:12

标签: python arrays sorting

我正在为我正在参加的课程研究奖金问题。假设我们有一个列表,例如mylist=[a1, b2, a3, c1, b1, a5, b3, c9]。我想使用基本的Python而不导入任何东西。我想按字母顺序对列表进行排序,然后对每个字母按数字排序。因此,结果将是列表[a1,a3,a5,b1,b2,b3,c1,c9]。我正在为数字实现简单的冒泡排序,但是如何对字母进行子排序(或者反之亦然?)

2 个答案:

答案 0 :(得分:1)

通过两个键使用sortedlist.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']

答案 1 :(得分:1)

尝试一下:

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']