python中对数据进行各种排序的方法

  

Python列表具有内置list . sort()就的方法,可以在原地修改列表。还有一个排序()内置的函数从迭代构建一个新的排序列表。在本文中,我们将探讨使用Python排序数据的各种技术。

  

请注意,()原始数据被破坏,排序()没有对原始数据进行操作,而是新建了一个新数据。

  

  

最基本的排序很简单,只要使用排序()函数即可返回一个新的排序的列表

        祝辞祝辞祝辞排序([5,2、3、1、4])   (1、2、3、4、5)      

咱们也可以使list . sort()就用方法。该方法是对列表列表进行的原地操作(原数据被修改,已经不是原来的本来面目)。一般情况下,不如使用排序()方便,但是如果你不需要原列表列表,使用排序()会更具效率。

        在祝辞祝辞=[5,2、3、1、4)   在祝辞祝辞类似()   在祝辞祝辞;#发生改变   (1、2、3、4、5)      

另一个不同点,list . sort()就<代码> 方法只能应用于列表对象数据。而排序()却可以对任何可迭代对象进行排序。也就是说排序()更具有普遍使用性。这里大灯建议初学者使用排序()。

  

  list . sort()就

和排序()都有关键参数,可以指定函数来对元素进行排序。

  

例如,这里我们使用一个字符串(字符串也是可迭代对象)

        在祝辞祝辞排序(“这是一个测试字符串从安德鲁”.split()键=str.lower)   (“a”,“安德鲁”,“从”,“是”,“弦”,“测试”,'这']      

我们指定按照首字符(统一变为小写后的字符)进行排序。关键参数的值是一个带有单一参数的函数,返回一个键主要用于排序。这种技术运行挺快的,具体为啥,我不懂。

  

例如:         在祝辞祝辞student_tuples=[   …(“约翰”,“一个”,15),   …(“简”、“B”, 12),   …(“大卫”、“B”, 10))   祝辞祝辞祝辞排序(student_tuples关键=λ学生:学生[2])   " " "      

通关键排过序。

  

键的值:λ函数

  

λ函数的参数是student_tuples列表中的元素——元组

  

λ函数运算的是student_tuples列表元素中元组的第三个元素。

        ”“”   ((“大卫”、“B”, 10),(“简”、“B”, 12),(“约翰”,“‘,15)]      

同样该方法也可作用于对象的属性,例如这里我先定义一个属性

        在在在类学生:   …def __init__(自我、姓名、年级、年龄):   …self.name=名字   …自我。年级=年级   …自我。年龄=年龄   …def __repr__(自我):   …返回repr ((self.name自我。年级,self.age))   在在在student_objects=[   …学生(“约翰”,“一个”,15),   …学生(“简”、“B”, 12),   …学生(“大卫”、“B”, 10))   在在在排序(student_objects关键=λ学生:student.age)   ((“大卫”、“B”, 10),(“简”、“B”, 12),(“约翰”,“‘,15)]      

  

上面列的那些关键函数方法都是非常常见,所以说python提供简洁高效的方法,算子库有itemgetter (), attrgetter (), methodcaller()这三个方法。

  

使用上面提到的算子库的方法,也可以实现上述例子,而且更简单,运行更快。

        在在在从运营商进口itemgetter attrgetter   在在在排序(student_tuples、关键=itemgetter (2))   ((“大卫”、“B”, 10),(“简”、“B”, 12),(“约翰”,“‘,15))   在在在排序(student_objects、关键=attrgetter(年龄))   ((“大卫”、“B”, 10),(“简”、“B”, 12),(“约翰”,“‘,15)]      

操作符库的方法可以提供多维度排序,例如我们队成绩和年龄同时排的序,但成绩的优先级高于年龄。

        在在在排序(student_tuples、关键=itemgetter (1、2)   [(“约翰”,“一个”,15),(“大卫”,“B”, 10),(“简”、“B”, 12))   在在在排序(student_objects、关键=attrgetter(“年级”,“年龄”))   [(“约翰”,“一个”,15),(“大卫”,“B”, 10),(“简”、“B”, 12)]      

  list . sort()就

和排序()都可以通过反向参数(真或假)进行升降序调整。这里我们对学生数据中年龄年龄进行翻转排序规则。

        在在在排序(student_tuples关键=itemgetter(2),反向=True)   [(“约翰”,“一个”,15),(“简”、“B”, 12),(“大卫”,“B”, 10))   在在在排序(student_objects关键=attrgetter(年龄),反向=True)   [(“约翰”,“一个”,15),(“简”、“B”, 12),(“大卫”,“B”, 10)]

python中对数据进行各种排序的方法