快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

python2排序函数 python二次排序

python由小到大排列?

1、定义一个数组

创新互联主营鸡西网站建设的网络公司,主营网站建设方案,重庆App定制开发,鸡西h5微信小程序开发搭建,鸡西网站营销推广欢迎鸡西等地区企业咨询

2、写个循环,将输入的数字放入到数组中

3、sorted函数排序

4、输出排序后的数组

python sort()用法

Python中的sort()方法用于数组排序,下面以实例形式对此加以详细说明:

一、基本形式

列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。

x = [4, 6, 2, 1, 7, 9]x.sort()

print x # [1, 2, 4, 6, 7, 9]

如果需要一个排序好的副本,同时保持原有列表不变,怎么实现呢

x =[4, 6, 2, 1, 7, 9]

y = x[ : ]

y.sort()

print y #[1, 2, 4, 6, 7, 9]

print x #[4, 6, 2, 1, 7, 9]

注意:y = x[:] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给y:y = x,y和x还是指向同一个列表,并没有产生新的副本。

另一种获取已排序的列表副本的方法是使用sorted函数:

x =[4, 6, 2, 1, 7, 9]

y = sorted(x)

print y #[1, 2, 4, 6, 7, 9]

print x #[4, 6, 2, 1, 7, 9]

sorted返回一个有序的副本,并且类型总是列表,如下:

print sorted('Python') #['P', 'h', 'n', 'o', 't', 'y']

二、自定义比较函数

可以定义自己的比较函数,然后通过参数传递给sort方法:

def comp(x, y):

if x  y:

return 1

elif x  y:

return -1

else:

return 0

nums = [3, 2, 8 ,0 , 1]

nums.sort(comp)

print nums # 降序排序[8, 3, 2, 1, 0]

nums.sort(cmp) # 调用内建函数cmp ,升序排序

print nums # 降序排序[0, 1, 2, 3, 8]

三、可选参数

sort方法还有两个可选参数:key和reverse

1、key在使用时必须提供一个排序过程总调用的函数:

x = ['mmm', 'mm', 'mm', 'm' ]

x.sort(key = len)

print x # ['m', 'mm', 'mm', 'mmm']

2、reverse实现降序排序,需要提供一个布尔值:

y = [3, 2, 8 ,0 , 1]

y.sort(reverse = True)

print y #[8, 3, 2, 1, 0]

什么是python内置函数sorted

Python对容器内数据的排序有两种,一种是容器自己的sort函数,一种是内建的sorted函数。

sort函数和sorted函数唯一的不同是,sort是在容器内排序,sorted生成一个新的排好序的容器。

对于一个简单的数组 L=[5,2,3,1,4].

sort: L.sort()

sorted(...)

sorted(iterable, cmp=None, key=None, reverse=False) -- new sorted list

iterable:待排序的可迭代类型的容器;

cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;

key:用列表元素的某个已命名的属性或函数(只有一个参数并且返回一个用于排序的值)作为关键字,有默认值,迭代集合中的一项;

reverse:排序规则. reverse = True 或者 reverse = False,有默认值。

返回值:是一个经过排序的可迭代类型,与iterable一样。

如果是一个多维的列表 L=[(‘b’,2),(‘a’,1),(‘c’,3),(‘d’,4)].

有三种选择对这个多维列表进行排序

利用cmp函数

sorted(L, cmp=lambda x,y:cmp(x[1],y[1]))

L.sort(cmp=lambda x,y:cmp(x[1],y[1]))

利用key

sorted(L, key=lambda x:x[1]);

L.sort(key=lambda x:x[1]);

反序

以上几种排序均可加上参数reverse.

例如 sorted(reverse=True), L.sort(reverse=True). 或者改成False

OrderedDict是collections中的一个包,能够记录字典元素插入的顺序,常常和排序函数一起使用来生成一个排序的字典。

比如,比如一个无序的字典

d = {‘banana’:3,’apple’:4,’pear’:1,’orange’:2}

通过排序来生成一个有序的字典,有以下几种方式

collections.OrderedDict(sorted(d.items(),key = lambda t:t[0]))

或者

collections.OrderedDict(sorted(d.items(),key = lambda t:t[1]))

或者

collections.OrderedDict(sorted(d.items(),key = lambda t:len(t[0])))

python中的list元组如何按照第二维元素排序

在Python中可以使用sorted函数对list进行排序,但是如果排序的对象是一个包含tuple的list时,sorted函数会使用tuple的第一个元素。

如果想要使用tuple的第二个元素进行排序,可以向sorted函数传入一个key参数,key参数必须是一个函数,输入是list的一个元素,输出最好是一个数字或简单的字符。

构造这样一个函数可以使用匿名函数lambda,示例代码如下:

myList = [('dungeon',7),('winterfell',4),('bran',9),('meelo',6)]

print sorted(myList, key=lambda x:x[1])

# [('winterfell', 4), ('meelo', 6), ('dungeon', 7), ('bran', 9)]

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

"""


网站栏目:python2排序函数 python二次排序
转载来于:http://6mz.cn/article/dociise.html

其他资讯