정렬 함수는 프로그램에서 자주 사용됩니다. Python은 정렬 및 정렬 기능을 제공하는데, 하나는 제자리 정렬이고, 다른 하나는 정렬 후 새 결과를 반환하는 것입니다
1. 매개변수
함수 프로토타입:
sort([cmp[, key[, reverse]]])
은 정렬 방법이 세 개의 매개변수를 허용하며 모두 생략할 수 있음을 의미합니다.
첫 번째 매개변수 cmp는 비교 함수입니다. 두 매개변수(목록의 요소)를 비교하는 방법은 무엇입니까? 정수와 같은 내장 유형을 비교하는 방법은 매우 직관적이지만 사용자 정의 비교에는 비교 함수를 정의하면 두 숫자가 같다는 의미인 0을 반환합니다. 음수를 반환하면 첫 번째 매개변수가 더 작다는 뜻이고 첫 번째 매개변수는 두 번째 매개변수보다 뒤처진다는 의미입니다. 매개변수.
두 번째 매개변수 키는 목록 요소의 어떤 속성을 비교할 것인지입니다.
세 번째 매개변수 reverse는 bool 유형으로, 역방향(역정렬) 여부를 의미합니다.
①, cmp 매개변수 예:
#cmp 函数,两个数倒过来比较 注!只能在python2.0上运行 s = [1, 2, 3, 4, 5] s.sort(cmp=lambda a, b:cmp(b, a)) print s # [5, 4, 3, 2, 1]
②, 자주 사용되는 매개변수 키, 역방향 사용 방법, 코드:
# key 指定排序方式 reverse 是否反排序 li = ['x11','abc323','e26','112ddd','fstgd2'] li.sort(key=len,reverse=True) # 用长度进行排序,从大到小进行排序 print(li) # ['abc323', '112ddd', 'fstgd2', 'x11', 'e26'] li.sort(key=lambda x:x[-1]) # key可以指定lambada函数x为列表中每个元素 print(li) # 元素的最后一个字符进行排序 # ['x11', 'fstgd2', 'abc323', 'e26', '112ddd'] li = zip(range(10),range(10)[::-1]) # 列表中元素为元祖是排序 print(li,type(li)) # <zip object at 0x000000E7F75504C8> <class 'zip'> li = list(li) print(li) # [(0, 9), (1, 8), (2, 7), (3, 6), (4, 5), (5, 4), (6, 3), (7, 2), (8, 1), (9, 0)] li.sort(key=lambda x:x[-1]) print(li) # [(9, 0), (8, 1), (7, 2), (6, 3), (5, 4), (4, 5), (3, 6), (2, 7), (1, 8), (0, 9)] #**注!默认sort也是会对列表中元祖进行排序的 li.sort() print(li) # (0, 9), (1, 8), (2, 7), (3, 6), (4, 5), (5, 4), (6, 3), (7, 2), (8, 1), (9, 0)]
매개변수 키는 다음과 같습니다: key=int, key=len, key=lambda...
2.
①. dict의 키-값 값을 값에 따라 작은 것부터 큰 것으로 출력하는 방법은 무엇입니까? dic = {'z':1, 'y':4,'x':2,'g':3,'sg':3}
dic= sorted(dic.items(),key=lambda x:x[1])
print(dic)
# [('z', 1), ('x', 2), ('sg', 3), ('g', 3), ('y', 4)]
from collections import OrderedDict
dic = {'z':1, 'y':4,'x':2,'g':3,'sg':3}
dic= OrderedDict(sorted(dic.items(),key=lambda x:x[1]))
print dic
# OrderedDict([('z', 1), ('x', 2), ('sg', 3), ('g', 3), ('y', 4)])
for k,v in dic.items():
print k,v
# z 1
# x 2
# sg 3
# g 3
# y 4
대소문자, 숫자만 포함하는 문자열 제공, 정렬 보장:
s = "Sorting1234" def sort_str(x): # x 传入的每个元素 if x.isdigit(): if int(x) % 2 == 0: return (4,x) # 返回的是元祖,元祖可进行排序 return (3,x) elif x.islower(): return (0,x) elif x.isupper(): return (1,x) li = sorted(s,key=sort_str) print(li) # ['g', 'i', 'n', 'o', 'r', 't', 'S', '1', '3', '2', '4'] string = ''.join(li) print(string) # ginortS1324
s = "Sorting1234"
s ="".join(sorted(s, key=lambda x: (x.isdigit(), x.isdigit() and int(x) % 2 == 0, x.isupper(), x.islower(), x)))
print(s)
# ginortS1324
위 내용은 Python 정렬에 대한 간략한 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!