python中对组合数据类型x进行排序的内置函数是
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])))
您好!我写了一个升序的方法供您参考:
请注意,要在 idle 中运行这个方法,并输入你希望的值
下面讲解一下:
方法体的第一句用于把你输入的数字储存在列表中,这句可以用于其他许多场合
后续的代码就是不断地递归,从而达到升序的效果
有不懂的可以问我哦~望采纳!
区别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 数组里面求和为某固定值的所有组合?
l = [2,3,4,5,6,7,8,10,12,13,23,34,56]def combination(l, n): l = list(sorted(filter(lambda x: x <= n, l))) combination_impl(l, n, [])def combination_impl(l, n, stack): if n == 0: print(stack) return for i in range(0, len(l)):...
如何在python中把两个列表的各项分别合并为列表
1、新建一个 将两个列表组合成一个列表.py。2、中文编码声明注释:# coding=gbk。3、定义两个列表,分别是 s1 和 s2 ,并且赋值。4、使用 + 号将两个列表组合成一个,并且使用 s3 接受新的列表。5、使用 print() 函数输出 s3。6、运行脚本,输出新组合出来的列表。
如何用python实现Markowitz投资组合优化
)Out[8]:6.投资组合优化1——sharpe最大 建立statistics函数来记录重要的投资组合统计数据(收益,方差和夏普比)通过对约束最优问题的求解,得到最优解。其中约束是权重总和为1。In [9]:def statistics(weights):weights = np.array(weights)port_returns = np.sum(returns.mean()*weights)*252 ...
python 正则表达式 我想找到字符串中成对匹配的数据 请指教
一个折中的办法是,用:>>> re.findall(r'(?:\\d+)([a-zA-Z]+)', 'sssa 123ammmmmde234abc aaaaa 123ammmmmde234abc llll')['ammmmmde', 'abc', 'ammmmmde', 'abc']找到上述的 ['ammmmmde', 'abc', 'ammmmmde', 'abc']然后你自己再另外提取,组合出来你要的:[(ammmmm...
python的两个不同类型的列表组合
from functools import reducea = [2,3,4]b = ['a','b','c']c = reduce(lambda x,y:x+y,[[x]*y for x,y in zip(b,a)])print(c)
python中怎么用两个列表组合成字典,相同key的vlue值组成列表
lista=['a','b','c','a','b','c','d']listb=['1','2','3','4','5','6','7']dict={}for i,j in zip(lista,listb): if i not in dict.keys(): dict[i]=j else: dict[i]=[dict[i]] dict[...
用python语言求三个数之和为500的所有组合
python 2.x:for i in range(1,500): for j in range(1,500): for k in range(1,500): if(i+j+k==500): print i,j,kpython 3.x for i in range(1,500): for j in range(1,500): for k in range(1,500): if(i+j+k==500): print("%d%d...
...计算从n个物-|||-品中取出m个物品的组合数,要求
在编程实现计算组合数之前,我们需要了解组合数的概念。组合数是指在给定n个不同元素中,取出m个元素的不同排列方式的总数,通常表示为C(n,m),其计算公式如下:C(n,m) = n! \/ [m! * (n-m)!]其中,n!表示n的阶乘,即n*(n-1)*...*2*1。接下来,我们可以使用以下Python代码实现输入...
python中,如何将多个字典组合成一个字典
Python编程将多个字典文件合并成一个字典文件,代码如下:\/\/例子:合并a.txt和b.txt两个字典文件def readf(filename): lines = file(filename).readlines() dic = {} for i in lines: i_ = i.split() dic[i_[0]] = int(i_[1]) return dic dica = readf('a.txt...
在python中,如果需要判断多个条件的组合,应该使用哪些保留字?_百度...
and表示逻辑与,or表示逻辑或,not表示逻辑非。
鲜洪山香: 一、基本形式 sorted(iterable[, cmp[, key[, reverse]]])iterable.sort(cmp[, key[, reverse]])参数解释: (1)iterable指定要排序的list或者iterable,不用多说; (2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,如...