1)排序基本
简朴的升序排序是异常轻易的。只需要挪用sorted()要领。它返回一个新的list,新的list的元素基于小于运算符(__lt__)来排序。
代码以下:
>>> sorted([5, 2, 3, 1, 4]) [1, 2, 3, 4, 5]
你也能够运用list.sort()要领来排序,此时list自身将被修正。一般此要领不如sorted()轻易,然则假如你不需要保存本来的list,此要领将更有用。
代码以下:
>>> a = [5, 2, 3, 1, 4] >>> a.sort() >>> a [1, 2, 3, 4, 5]
另一个差别就是list.sort()要领仅被定义在list中,相反地sorted()要领对一切的可迭代序列都有用。
代码以下:
>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}) [1, 2, 3, 4, 5]
2)key参数/函数
从python2.4最先,list.sort()和sorted()函数增加了key参数来指定一个函数,此函数将在每一个元素比较前被挪用。 比方经由过程key指定的函数来疏忽字符串的大小写:
代码以下:
>>> sorted("This is a test string from Andrew".split(), key=str.lower) ['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
key参数的值为一个函数,此函数只要一个参数且返回一个值用来举行比较。这个手艺是疾速的由于key指定的函数将正确地对每一个元素挪用。
更普遍的运用情况是用庞杂对象的某些值来对庞杂对象的序列排序,比方:
代码以下:
>>> student_tuples = [ ('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10), ] >>> sorted(student_tuples, key=lambda student: student[2]) # sort by age [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
一样的手艺对具有定名属性的庞杂对象也实用,比方:
代码以下:
>>> class Student: def __init__(self, name, grade, age): self.name = name self.grade = grade self.age = age def __repr__(self): return repr((self.name, self.grade, self.age)) >>> student_objects = [ Student('john', 'A', 15), Student('jane', 'B', 12), Student('dave', 'B', 10), ] >>> sorted(student_objects, key=lambda student: student.age) # sort by age [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
3)Operator 模块函数
上面的key参数的运用异常普遍,因而python供应了一些轻易的函数来使得接见要领越发轻易和疾速。operator模块有itemgetter,attrgetter,从2.6最先还增加了methodcaller要领。运用这些要领,上面的操纵将变得越发简约和疾速:
复制代码 代码以下:
>>> from operator import itemgetter, attrgetter >>> sorted(student_tuples, key=itemgetter(2)) [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] >>> sorted(student_objects, key=attrgetter('age')) [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
operator模块还许可多级的排序,比方,先以grade,然后再以age来排序:
复制代码 代码以下:
>>> sorted(student_tuples, key=itemgetter(1,2)) [('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)] >>> sorted(student_objects, key=attrgetter('grade', 'age')) [('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]
4)升序和降序
list.sort()和sorted()都接收一个参数reverse(True or False)来示意升序或降序排序。比方对上面的student降序排序以下:
复制代码 代码以下:
>>> sorted(student_tuples, key=itemgetter(2), reverse=True) [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)] >>> sorted(student_objects, key=attrgetter('age'), reverse=True) [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
以上就是python中降序用哪一个单词的细致内容,更多请关注ki4网别的相干文章!