list.sort(cmp=None, key=None, reverse=False)
cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
#列表升序
list1=['python','java','c++','阿里','1','2','3']
list1.sort()
print(list1)
#列表降序
list1.sort(reverse=True)
print(list1)
"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py
['1', '2', '3', 'c++', 'java', 'python', '阿里']
['阿里', 'python', 'java', 'c++', '3', '2', '1']
Process finished with exit code 0
sorted(iterable, cmp=None, key=None, reverse=False)
iterable -- 可迭代对象。
cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
#列表升序
list2=[("python","java"),("c","c++"),("1","php")]
print(sorted(list2))
#列表降序
print(sorted(list2,reverse = True))
#通过key的值来进行数组/字典的升序
array = [{"age": 20, "name": "a"}, {"age": 25, "name": "b"}, {"age": 10, "name": "c"}]
array_data = sorted(array, key=lambda x: x["age"])
print(array_data)
#先按照成绩降序排序,相同成绩的按照名字升序排序:
dict_data = [{'name': 'alice', 'score': 38}, {'name': 'bob', 'score': 18}, {'name': 'darl', 'score': 28},
{'name': 'christ', 'score': 28}]
dict_sorted = sorted(dict_data, key=lambda x: (-x['score'], x['name']))
print(dict_sorted)
"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py
[('1', 'php'), ('c', 'c++'), ('python', 'java')]
[('python', 'java'), ('c', 'c++'), ('1', 'php')]
[{'age': 10, 'name': 'c'}, {'age': 20, 'name': 'a'}, {'age': 25, 'name': 'b'}]
[{'name': 'alice', 'score': 38}, {'name': 'christ', 'score': 28}, {'name': 'darl', 'score': 28}, {'name': 'bob', 'score': 18}]
Process finished with exit code 0
sort()是应用在list上的方法,sorted()可以对所有可迭代的对象进行排序操作。
list的sort()方法返回的是对已经存在的列表进行操作,无返回值,而内建函数sorted()方法返回的是一个新的list,而不是在原来的基础上进行的操作。
是最常见到的排序算法,也是很基础的一种排序算法。它的实现思想是:相邻的两个元素进行比较,然后把较大的元素放到后面(正向排序),在一轮比较完后最大的元素就放在了最后一个位置,像鱼儿在水中吐的气泡在上升的过程中不断变大
list3=["3","9","1","A","p"]
for i in range(len(list3)):
for j in range(i+1,len(list3)):
if list3[i]>list3[j]:
list3[i],list3[j]=list3[j],list3[i]
print(list3)
"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py
['1', '3', '9', 'A', 'p']
Process finished with exit code 0
选择排序的思路是:第一轮的时候,所有的元素都和第一个元素进行比较,如果比第一个元素大,就和第一个元素进行交换,在这轮比较完后,就找到了最小的元素;第二轮的时候所有的元素都和第二个元素进行比较找出第二个位置的元素,以此类推。
list4=["3","9","1","2","4"]
for i in range(len(list4)-1,0,-1):
for j in range(i):
if list4[j]>list4[i]:
list4[j], list4[i] = list4[i], list4[j]
print(list4)
"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py
['1', '2', '3', '4', '9']
Process finished with exit code 0