티스토리 뷰
1 2 3 4 5 6 7 | colors = ('BLACK', 'white', 'Red', 'green', 'blue') def ignore(text): return text.lower() temp = sorted(colors, key=ignore) print(temp) |
위 코드는 앞서 리스트에서 했던 키값을 이용하여 정렬하기를 응용한 정렬이다.
우선적으로 colors라는 변수를 살펴보면 이전에 했던 리스트와 다른점을 찾을수가 있는데 바로 괄호의 모양이다.
리스트는 대괄호를 사용하고, 튜플은 소괄호를 사용한다. 이후에 알아볼 사전(dictionary)과 set은 중괄호를 사용한다.
튜플의 가장 큰 특징이라고 한다면 값을 수정할 수 없다는 점이다.
리스트와 비슷한 역할을 하지만 값을 넣거나 삭제하고 수정할수있는 리스트와는 구분해서 사용하는것이 좋다.
코드로 다시 돌아와서 설명을 하자면 colors라는 튜플 안에 있는 변수들은 대소문자가 각각 제각각이다. 따라서 정렬을 했을때 원하는 결과가 나오지 않을 확률이 높다.
따라서 ignore라는 함수를 추가로 만들어서 입력한 텍스트를 소문자로 리턴받고, 앞서 리스트에서 했던 방식과 같이 정렬을 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | tuples = [('kim',30), ('han',10), ('min',20), ('han',70), ('min', 90)] def age(t): return t[1] def name(t): return t[0] tuples.sort(key=age) print(tuples) tuples.sort(key=name) print(tuples) | cs |
위 코드는 튜플에 키값을 부여하여 정렬하는 방법이다.
방금 전에 알아본 예제와 방법은 같지만, 리스트 내부에 튜플을 포함하고 있고, 튜플도 리스트처럼 대괄호를 통한 참조가 가능하다는 점을 참고하면 되겠다.
1 2 3 4 | from operator import itemgetter tuples.sort(key=itemgetter(0)) print(tuples) | cs |
operator 라는 모듈에서 itemgetter만 import 했다.
itemgetter 함수를 operator를 import해서 사용할 수도 있지만 매번 operator.itemgetter라고 호출해야 하는 점이 불편하다. 위와같이 모듈 내부에 있는 모듈을 import 하는 방법도 있으니 참고하자.
사실 방금 전에 age,name이라는 함수를 만들었지만 제공된 itemgetter 함수를 이용하면 해당 리스트(혹은 튜플, 딕셔너리 등)의 n번째 방에 있는 값을 참조할 수 있다.
1 2 | tuples.sort(key=itemgetter(0,1)) print(tuples) | cs |
이와같은 형식으로 2차정렬을 할 수도 있다. 만약 같은이름이 있다면 같은이름을 나이순으로 정렬한다고 해석하면 되겠다.
1 2 | tuples.sort(key=lambda t: t[1]) print(tuples) | cs |
1 2 | def hap(x, y): return x + y | cs |
1 | (lambda x,y: x + y)(10,20) | cs |
이와같은 형태로 나타낼 수 있겠다.
파이썬 뿐만이 아니라 다른 언어에서도 자주 사용되는 형식이므로 숙지해 놓는것이 좋겠다. 따라서 이를 응용하면
1 2 | tuples.sort(key=lambda t: t[1]) print(tuples) | cs |
다음과 같은 형태로 튜플을 초기화 시켜볼 수 있겠다.
'파이썬' 카테고리의 다른 글
파이썬 : 람다 함수 (lambda function) (0) | 2015.05.20 |
---|---|
파이썬의 포인터 (2) | 2015.05.19 |
파이썬 예제 : 리스트를 정렬(Sort)하는 여러가지 방법 (2) | 2015.05.19 |
파이썬 예제 : 별(*) 찍기 (3) | 2015.05.19 |
파이썬 예제 : 달팽이 그리기, 똬리배열 (0) | 2015.05.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 라즈베리파이
- 액터
- MFC
- 파이썬
- socket
- C
- C++
- 프로세스
- 티그널
- 티라노 시그널
- 안드로이드
- Sort
- 파일
- C/C++
- 클라이언트
- 터미널
- 데이터베이스
- 정렬
- 리눅스
- UML
- 자료구조
- 파이썬예제
- 스레드
- 디렉터리
- 유즈케이스
- 소켓
- 클래스
- 악보
- 소켓 프로그래밍
- 쓰레드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
글 보관함