문자열 길이를 기준으로 Python 목록 정렬
문자열 길이를 기준으로 문자열 목록을 정렬하고 싶습니다.아래와 같이 정렬을 시도했지만, 결과가 정확하지 않은 것 같습니다.
xs = ['dddd','a','bb','ccc']
print xs
xs.sort(lambda x,y: len(x) < len(y))
print xs
['dddd', 'a', 'bb', 'ccc']
['dddd', 'a', 'bb', 'ccc']
뭐가 잘못됐나요?
a를 통과할 때lambda
로.sort
부울이 아닌 정수를 반환해야 합니다.따라서 코드는 다음과 같이 표시됩니다.
xs.sort(lambda x,y: cmp(len(x), len(y)))
cmp는 다음과 같은 내장 함수입니다.cmp(x, y)
이 경우 -1을 반환합니다.x
보다 작다y
, 0 이면x
와 동등하다y
, 및 1의 경우x
보다 크다y
.
물론 그 대신에key
파라미터:
xs.sort(key=lambda s: len(s))
이것은,sort
키 함수가 반환하는 모든 것을 기준으로 주문할 수 있습니다.
편집: Balpha와 Ruslan은 당신이 단지 합격할 수 있다고 지적해 주셔서 감사합니다.len
함수의 핵심 파라미터로서 직접, 따라서 필요 없음lambda
:
xs.sort(key=len)
Ruslan이 아래에 지적한 바와 같이 내장 정렬 기능을 사용할 수도 있습니다.list.sort
method: 기존 목록을 정렬하지 않고 새 목록을 만듭니다.
print(sorted(xs, key=len))
일라이의 대답과 같다 - 단지 더 짧은 형식을 사용했을 뿐이다.lambda
여기서 헤어집니다.
새 목록 만들기:
>>> xs = ['dddd','a','bb','ccc']
>>> sorted(xs, key=len)
['a', 'bb', 'ccc', 'dddd']
인플레이스 정렬:
>>> xs.sort(key=len)
>>> xs
['a', 'bb', 'ccc', 'dddd']
가장 쉬운 방법은 다음과 같습니다.
list.list(키 = lamda x:len(x))
정렬하는 동안 피톤 키 기능이 어떻게 작동하는지 추가하려고 합니다.
디자인 패턴 꾸미기-정렬-해제:
정렬 시 Python의 키 기능에 대한 지원은 decorate-sort-undecorate 디자인 패턴으로 알려진 것을 사용하여 구현됩니다.
다음 3단계로 진행됩니다.
목록의 각 요소는 요소에 적용된 키 기능의 결과를 포함하는 "장식" 버전으로 일시적으로 대체됩니다.
목록은 키의 자연 순서에 따라 정렬됩니다.
장식된 요소는 원래 요소로 대체됩니다.
비교하기 전에 각 목록 요소에서 호출할 함수를 지정하는 키 매개 변수입니다.문서
길이를 기준으로 문자열 목록을 정렬하는 함수 렌즈 정렬을 작성합니다.
def lensort(a):
n = len(a)
for i in range(n):
for j in range(i+1,n):
if len(a[i]) > len(a[j]):
temp = a[i]
a[i] = a[j]
a[j] = temp
return a
print lensort(["hello","bye","good"])
아래 두 가지 방법, 기능 사용으로 할 수 있습니다.
def lensort(x):
list1 = []
for i in x:
list1.append([len(i),i])
return sorted(list1)
lista = ['a', 'bb', 'ccc', 'dddd']
a=lensort(lista)
print([l[1] for l in a])
람다를 사용하는 한 라이너에서 다음과 같이 a는 이미 위에 답변했습니다.
lista = ['a', 'bb', 'ccc', 'dddd']
lista.sort(key = lambda x:len(x))
print(lista)
def lensort(list_1):
list_2=[];list_3=[]
for i in list_1:
list_2.append([i,len(i)])
list_2.sort(key = lambda x : x[1])
for i in list_2:
list_3.append(i[0])
return list_3
이거면 돼!
언급URL : https://stackoverflow.com/questions/2587402/sorting-python-list-based-on-the-length-of-the-string
'programing' 카테고리의 다른 글
워크북의 끝에 VBA 복사 시트(숨긴 워크시트 포함) (0) | 2023.04.16 |
---|---|
github에서 모든 커밋 이력을 삭제하는 방법 (0) | 2023.04.16 |
WPF(.NET 4)에 TimePicker 컨트롤이 있습니까? (0) | 2023.04.16 |
인수를 기반으로 WPF를 시작하는 방법 (0) | 2023.04.16 |
WPF DataGrid에서 원클릭 편집 (0) | 2023.04.16 |