python里有一个列表,列表里有几个小列表,小列表里写的是同学的名字和成绩,如何带着列表给分数排序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python里有一个列表,列表里有几个小列表,小列表里写的是同学的名字和成绩,如何带着列表给分数排序?相关的知识,希望对你有一定的参考价值。

#冒泡排序:
scoreList = [
['a',98],
['c',45],
['b',70],
['d',85],
['h',85],
['f',92],
['g',30],
['e',65]
];
arrLen = len(scoreList);
for i in range(arrLen):
a = scoreList[i]
for j in range(arrLen):
b = scoreList[j-1]
if b[1]<a[1]:
scoreList[i],scoreList[j-1] = scoreList[j-1],scoreList[i]
print(scoreList)

冒泡排序 也可以用自带的排序函数 scoreList.sort(key=func) func是一个自定义的函数 具体用法可以看文档

参考技术A 简单的写sorted(list1, key=lambda x:x[1]

python实现列表的排序

群里有同行遇到这样一个面试题:有一个整数构成的列表,需要给这个列表进行从小到大存入到另一个列表中。

本身排序可以用python的内置函数sort和sorted,但题目的要求是手动实现。

看起来很简单,实现的发现并不容易,花了半个小时才调试好。

 

解题思路:

1.将列表中的第1个元素放入新列表,然后将元素的索引存入索引列表,然后遍历列表,如有比新列表最后一个元素小,那做替换动作,索引也要做替换动作。然后将列表第2个元素放入新列表,然后遍历列表进行第2个元素的比较。。。

 

直接上代码:

def MySort(list):
    newlist = []
    indexlist = []
    for i in range(len(list)):
        print("第%d个元素操作:" % (i+1))
        flag = 0
        for j in range(len(list)):
            try:
                if flag == 0 and j not in indexlist:
                    print("将第一个元素且未存入新列表的元素%d暂存入新列表" % list[j])
                    newlist.append(list[j])
                    print("索引%d暂存入到索引列表" %j)
                    indexlist.append(j)
                    flag =1
                elif list[j] < newlist[i] and flag == 1:
                    print("遍历列表,发现新元素%d更小" % list[j])
                    if j not in indexlist:
                        print("新元素%d替换暂存元素%d" % (list[j],newlist[i]))
                        newlist.remove(newlist[i])
                        newlist.append(list[j])
                        indexlist.remove(indexlist[len(indexlist) - 1])
                        indexlist.append(j)
                    else:
                        print("元素%d的索引%d已经在新列表中,不能重复存入" % (list[j],j))
            except IndexError as f:
                pass
        print("当前索引列表是:%s" % indexlist)
        print("新列表元素是%s:"%newlist)
        print("----------------------------------")
    return newlist
oldlist = [0,6,100,0,1,5,2,4,1,14,2,-1]
newlist = MySort(oldlist)
print(newlist)

 

以上是关于python里有一个列表,列表里有几个小列表,小列表里写的是同学的名字和成绩,如何带着列表给分数排序?的主要内容,如果未能解决你的问题,请参考以下文章

列表,元组,字典类的常见简单方法

python怎么知道列表中最大的元素是第几个

python初学-列表和字典的几个小例子

python列表推导式

python实现列表的排序

VB问题,listview列表里有上万内容,怎样快速导出到Excel文件。(高分求救)