自编排序函数python,自定义函数排序

怎样用python将数组里的数从高到低排序

1、首先我们定义一个列表输入一串大小不一的数字。

创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的建湖网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

2、可以用sort()方法对定义的列表排序,注意,sort只是对列表排序,它没有返回一个值。

3、输入print列表名即可得到排序后的列表数据。

4、倒序可以用这个reverse方法,把元素位置倒转过来。

5、然后再次print列表名,这样就会得到倒转顺序之后的列表数据。

5、如图两相对比即实现了从高到低和从低到高排序。

python 内置排序函数使用

python内置关于排序的工具主要有两个一个是列表自带的 sort() 方法,另外一个是 sorted() 函数。Python 列表内置方法可以直接修改列表。而 sorted() 内置函数从一个可迭代对象(列表,元组等都可以)构建一个新的排序列表。其函数原型分别如下:

对列表进行默认排序

从函数原型来看,可以看到两者都具有两个可选参数,它们都必须指定为关键字参数。

key 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例如 key=str.lower)。默认值为 None (直接比较元素)。 key 形参的值应该是个函数(或其他可调用对象),它接受一个参数并返回一个用于排序的键。

假设有其他类型的变量,比如一个自定义的类或者列表中又是一个列表。以官网例子为例有这样一个列表,其元素为元组,

可以用以下方式按照年龄排序

类似的有自定义类

可以用如下方式进行排序

也可以显示定义一个函数,且只有一个参数,返回用于排序的键,比如

总之就是定义一个函数返回一个用于排序的键,可以用lambda函数或者 def 定义都可以。

上面实现的简单函数实际就是实现了返回一个有序结构的第 n 的元素,或者某个类中的某个属性,因此 Python 提供了便利功能,使访问器功能更容易,更快捷。operator 模块有 itemgetter() 、 attrgetter() 函数。分别完成返回第 n 个元素,某个属性功能。上面的排序可以用如下方式进行实现

在python2中,sort有一个 cmp 参数,即用一个函数来自定义比较,在python3中这种方式被取消。为了继承类似的用法,在 Python 3.2 中, functools.cmp_to_key() 函数被添加到标准库中的 functools 模块中。

这种作用先定义如何比较两个变量,以上面的学生列表按照年龄排序为例

这种做法自定义比较函数接收两个形参,返回比较结果(bool),而新式方法接受一个参数,返回的是比较的键。

假设有字典 d = {'b':2, 'a':1,'c':8,'d':4} ,则可以通过以下方式对字典按照键和值进行排序

python怎样用自定义函数对列表排序?

您好!我写了一个升序的方法供您参考:

请注意,要在 idle 中运行这个方法,并输入你希望的值

下面讲解一下:

方法体的第一句用于把你输入的数字储存在列表中,这句可以用于其他许多场合

后续的代码就是不断地递归,从而达到升序的效果

有不懂的可以问我哦~望采纳!

sorted函数python

sorted函数python介绍如下

sorted() 作为 Python 内置函数之一,其功能是对序列(列表、元组、字典、集合、还包括字符串)进行排序。

sorted() 函数的基本语法格式如下

list = sorted(iterable, key=None, reverse=False)

其中,iterable 表示指定的序列,key 参数可以自定义排序规则;reverse 参数指定以升序(False,默认)还是降序(True)进行排序。sorted() 函数会返回一个排好序的列表。

注意,key 参数和 reverse 参数是可选参数,即可以使用,也可以忽略。

演示sorted()函数的基本代码用法:

#对列表进行排序

a = [5,3,4,2,1]

print(sorted(a))

#对元组进行排序

a = (5,4,3,1,2)

print(sorted(a))

#字典默认按照key进行排序

a = {4:1,\

5:2,\

3:3,\

2:6,\

1:8}

print(sorted(a.items()))

#对集合进行排序

a = {1,5,3,2,4}

print(sorted(a))

#对字符串进行排序

a = "51423"

print(sorted(a))

在Python 3 中的自定义排序怎么办

python3 sorted取消了对cmp的支持。 

python3 帮助文档: 

sorted(iterable, key=None, reverse=False)

reverse是一个布尔值。如果设置为True,列表元素将被倒序排列,默认为False

key接受一个函数,这个函数只接受一个元素,默认为None

Key的作用原理

Python2中的自定义布尔函数cmp=custom_cmp(x, y)由Python3中的key=custom_key(x)代替。

在python3中,待比较元素x通过custom_key函数转化为Python能比较的值custom_key(x),进而再基于返回值进行排序。

例子1:

my_alphabet = ['a', 'b', 'c']def custom_key(word):

numbers = []   for letter in word:

numbers.append(my_alphabet.index(letter))   return numbers# python中的整数列表能够比较大小# custom_key('cbaba')==[2, 1, 0, 1, 0]x=['cbaba', 'ababa', 'bbaa']

x.sort(key=custom_key)123456789101112

例子2

students = [('john', 'A', 15), ('jane', 'B', 12), ('dave','B', 10)]

sorted(students,key=lambda x: x[2]) #按照年龄来排序12

关于lambda表达式

例子3

默认sorted([True, False])==[False, True] (False=0 True=1)

一个字符串排序,排序规则:小写大写奇数偶数

#元组内(e1, e2, e3)的优先级排列为: e1 e2 e3sorted(s, key=lambda x: (x.isdigit(),x.isdigit() and int(x) % 2 == 0,x.isupper(),x)#input: 'asdf234GDSdsf23'#output: 'addffssDGS33224'12345

x.isdigit()的作用是把数字放在后边(True),字母放在前面(False).

x.isdigit() and int(x) % 2 == 0的作用是保证数字中奇数在前(False),偶数在后(True)。

x.isupper()的作用是在前面基础上,保证字母小写(False)在前大写在后(True).

最后的x表示在前面基础上,对所有类别数字或字母排序。

python手写排序函数 在线等

#举个例子,冒泡排序

def sort_list(f, l):

print "befor:", l

for i in range(len(l)):

for j in range(i, len(l)):

if not f(l[j], l[i]):

l[i], l[j] = l[j], l[i]

print "sorted: ", l

#function

f  = lambda a,b : a= b

#test

l1 = [3,2,1,6,4]

l2 = ["a","x", 5, "g"]

sort_list(f, l1)

sort_list(f, l2)

#STDOUT:

"""

befor: [3, 2, 1, 6, 4]

sorted:  [1, 2, 3, 4, 6]

befor: ['a', 'x', 5, 'g']

sorted:  [5, 'a', 'g', 'x']

"""


本文名称:自编排序函数python,自定义函数排序
当前链接:http://pwwzsj.com/article/dsecgce.html