python二维排序
⑴ python中对组合数据类型x进行排序的内置函数是
python有两个内置的函数用于实现排序,一个是list.sort()函数,一个是sorted()函数。
区别1:list.sort()函数只能处理list类型数据的排序;sorted()则可以处理多种类型数据的排序。
区别2:list.sort()会修改原来的list为排序后的结果;sorted()不会修改原来的数据,只是返回一个排序后的对象。
下面来动手写点代码进行测试:
list进行简单的排序
1 >>>a=['a','f','c','x','e']2 >>>a.sort()3 >>>a4 [a','c','e','f','x']
sorted()进行简单排序
1 >>>a=['a','f','c','x','e']2 >>>a_new=sorted(a)3 >>>a_new4 ['a', 'c', 'e', 'f', 'x']
list.sort()和sorted都有默认的参数reverse,该参数的默认值为“False”,即默认升序排列。如果要进行降序排列:
1 >>>a=['a','f','c','x','e']2 >>>a_new=sorted(a,reverse=True)3 >>>a_new4 ['x', 'f', 'e', 'c', 'a']
对元组进行排列,不能使用list.sort()函数:
1 >>>a=('a','f','c','x','e')2 >>>a_new=a.sort()3
4 ttributeError: 'tuple' object has no attribute 'sort'
对字典的排序可以按照字典的key或者value进行排序:
1 >>>dic={"aa":11,"ff":5,"ee":22}2 >>>printsorted(dic.keys())3 ['aa', 'ee', 'ff']
从python2.4开始list.sort()和sorted()都引入了key参数来指定一个函数进行排序,有了key参数以后我们就可以对更加复杂的数据进行排序 。
假如需要排序的数据为一个list,但list的每一个元素都是一个字典,排序的方法如下:
>>>dic=[{"name":"sunny","age":20},
{"name":"bell","age":5},
{"name":"jim","age":1},
{"name":"jan","age":10}]>>>print sorted(dic,key=lambda arg:arg.get('age'),reverse=False) #按照每个字典的age的值进行排序,字典的方法dict.get(key)将返回指定键的值。
#输出结果为:[{'age': 1, 'name': 'jim'}, {'age': 5, 'name': 'bell'}, {'age': 10, 'name': 'jan'}, {'age': 20, 'name': 'sunny'}]
>>>print sorted(dic,key=lambda arg:arg.get('name'),reverse=False) #按照每个字典的name的值进行排序
#输出结果为:[{'age': 5, 'name': 'bell'}, {'age': 10, 'name': 'jan'}, {'age': 1, 'name': 'jim'}, {'age': 20, 'name': 'sunny'}]
假如需要排序的数据为一个二维的list,即list的每一个元素也是一个list,方法与上面的例子类似:
>>>a=[['100','8','30'],['200','5','50'],['300','1','20']]>>>print sorted(a,key=lambda arg:arg[1]) #按照每个list的第1个元素进行排序
[['300', '1', '20'], ['200', '5', '50'], ['100', '8', '30']]
前面的2个例子中,key参数的值都是函数。在sorted函数中,key参数后面的函数的参数的数量只能是一个。lambda arg:arg.get('age')是一个lambda匿名函数,它是一个没有函数名的单语句函数。冒号左边是参数,冒号右边的返回值,返回值将被用于排序。
⑵ python二维数组按第一列排序问题,整行数据一起排序。
def by0(t):
return t[0]
a=[[1,2,4],[6,3,5],[2,4,5]]
a0=sorted(a,key=by0)
print(a0)
如果是多维数组按当中某行数据排序,修改自定义函数中return的数就行了
⑶ python 二维数组排序
python有自带的sorted函数。
sorted 语法:
sorted(iterable, key=None, reverse=False)
iterable -- 可迭代对象。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
比如,对二维数组按照第一个元素排序:arr = list(sorted(arr, key=lambda x: x[0]))
⑷ python中的list元组如何按照第二维元素排序
在Python中可以使用sorted函数对list进行排序,但是如果排序的对象是一个包含tuple的list时,sorted函数会使用tuple的第一个元素。
如果想要使用tuple的第二个元素进行排序,可以向sorted函数传入一个key参数,key参数必须是一个函数,输入是list的一个元素,输出最好是一个数字或简单的字符。
构造这样一个函数可以使用匿名函数lambda,示例代码如下:
myList=[('ngeon',7),('winterfell',4),('bran',9),('meelo',6)]
printsorted(myList,key=lambdax:x[1])
#[('winterfell',4),('meelo',6),('ngeon',7),('bran',9)]
⑸ python常见的三种列表排序算法分别是什么
python中有两种排序方法,list内置sort()方法或者python内置的全局sorted()方法二者区别为:sort()方法对list排序会修改list本身,不会返回新list。sort()只能对list进行排序。sorted()方法会返回新的list,保留原来的list。
先说reverse,这个很简单,就是指出是否进行倒序排序:一般情况下,1排在2的前面,而倒序则相反。key参数:一般它是一个函数,它接受列表中每一个元素,返回一个可用用于比较的值。
在Python中,Python算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。冒泡排序冒泡排序也是一种简单直观的排序算法。
③对所有两个小数列重复第二步,直至各区间只有一个数。排序演示算法实现希尔排序介绍希尔排序(ShellSort)是插入排序的一种,也是缩小增量排序,是直接插入排序算法的一种更高效的改进版本。
排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。
⑹ Python中的两种排序方法:sort()和sorted()
Python中常用的排序方法有 sort() 和 sorted()。sort() 方法直接修改原列表,返回值为 None;而 sorted() 则不会修改原列表,返回一个排序后的新列表。我们可以通过实例来说明:
python
import operator
a = [3, 4, 5, 1]
b = [1, 3, 2, 4]
c = {1: 'a', 3: 'b', 2: 'c'}
d = [[3, 1], [2, 4]]
print("print(a):", a)
print("print(a.sort()):", a.sort())
print("print(a):", a) # 注意,调用 sort() 后,a 的内容已改变
print("print(b):", b)
print("print(sorted(b))", sorted(b)) # 使用 sorted() 后,b 保持不变,输出结果为 [1, 2, 3, 4]
print("print(b):", b)
print("print(c):", c)
print("print(sorted(c)):", sorted(c)) # 对字典排序时,sorted() 返回键的排序结果
print("print(operator.itemgetter(0)(a)):", operator.itemgetter(0)(a)) # 获取 a 中元素的第一个元素
print("sorted(d,key=operator.itemgetter(0)):", sorted(d, key=operator.itemgetter(0))) # 按列表元素的子列表第一个元素排序
print("sorted(d,key=operator.itemgetter(1)):", sorted(d, key=operator.itemgetter(1))) # 按列表元素的子列表第二个元素排序
从上述代码执行结果可以看出,sort() 方法直接修改了原列表 a 的内容,而 sorted() 则生成了一个新列表。另外,对于字典类型的排序,sorted() 会按字典键进行排序。同时,通过 operator.itemgetter() 方法可以实现更灵活的排序逻辑,例如根据列表中子列表的某个元素进行排序。