(수업내용 : 내장 함수
⑫ filter() 함수
; filter() 함수는 특정 조건을 만족하는 요소만을 뽑는다. 이 함수는 두 개의 인수를 취한다. 첫 번째는 조건을 나
타내는 함수이고 두 번째는 반복 가능 객체이다. 첫 번째 인자값인 함수가 True값을 반환하는 요소들만 리스
트의 형태로 반환한다.
⑬ zip() 함수
; zip() 함수는 2개의 리스트를 하나로 묶어주는 함수이다.아울러 zip() 함수가 가장 많이 사용되는 부분은 for 반
복문이다.
def myfilter(x):
return x > 3
result = filter(myfilter, (1, 2, 3, 4, 5, 6))
print(list(result))
출력결과
[4, 5, 6]numbers = [1, 2, 3, 4]
slist = ['one', 'two', 'three', 'four’]
print(list(zip(numbers, slist)))
출력결과
[(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
names = [ "KIM", "LEE", "PARK" ]
scores = [ 100, 99, 80 ]
for n, s in zip(names, scores):
print(n, s)
출력결과
KIM 100
LEE 99
PARK 80
정렬과 탐색
-
파이썬 리스트는 sort()라는 메소드를 가지고 이 메소드는 리스트를 정렬된 상태로 변경한다. 또 sorted()라는 내
장 함수는 반복 가능한 객체로부터 정렬된 리스트를 생성한다. sort()는 메소드이고 sorted()는 내장 함수이다.여
기서는
파이썬에서 정렬에 대하여 알아야 할 사항들을 요약해본다.
- 간단하게 정렬을 실행하려면 아주 쉽다. 다음과 같이 sorted()를 호출하면 된다. sorted()는 기존의 리스트를 변경
하는 것이 아니라 정렬된 새로운 리스트를 반환한다. 기존의 리스트는 전혀 변경되지 않는다. sorted()는 “정렬된
새로운 리스트”로 기억하자.
- 리스트의 메소드인 sort()를 사용하여도 정렬이 된다. 이 경우에는 리스트 자체를 변경해버린다. 일반적으로 이것
보다는 내장 함수인 sorted()가 더 편리하다.sort()메소드는 리턴값이 None이다.물론 새로운 리스트를 만들어서
반환하지 않다보니 sorted()에 비해 속도는 빠른편이다.하지만 원본값을 바꿔버리는 것에 주의하자.
print(sorted([4, 2, 3, 5, 1]))
출력결과
[1, 2, 3, 4, 5]
myList = [4, 2, 3, 5, 1]
myList.sort()
print(myList)
출력결과
[1, 2, 3, 4, 5]) 정렬과 탐색
- 또한 sort()는 리스트만을 위한 메소드이지만 sorted() 함수는 어떤 반복가능한 객체(리스트, 문자열, 튜플, 딕셔너
리 등) 도 받을수 있다. 예를 들어서 다음과 같은 딕셔너리 객체도 받을 수 있다.
2) key 매개변수
- 정렬을 하다 보면 정렬에 사용되는 키를 개발자가 변경해 주어야 하는 경우가 종종 있다. 파이전 2.4부터는 개발
자가 key 매개변수로, 정렬을 하기 전에 각 요소에 대하여 호출되는 함수를 지정할 수 있다.
- 위의 문장에서는 문자열을 받아서 split()로 단어들의 리스트로 변환한 후에 key를 문자열 객체의 lower() 함수로
지정하였다. 따라서 단어들을 비교하기 전에, lower() 함수가 호출되어서 단어들을 소문자로 변경하게 된다.
print(sorted("The health know not of their health, but only the sick".split(), key=str.lower))
출력결과
['but', 'health', 'health,', 'know', 'not', 'of', 'only', 'sick', 'The', 'the’, tprint(sorted({3: 'D', 2: 'B', 5: 'B', 4: 'E', 1: 'A’}))
출력결과
heir']) key 매개변수
- key 매개변수가 많이 사용되는 경우는 객체의 데이터 중에서 특정한 데이터를 기준으로 정렬하는 경우이다. 예를
들어서 학생들을 다음과 같이 튜플의 리스트로 나타낸 후에 학생들의 학번을 기준으로 정렬하는 코드를 작성하
는 경우를 살펴보자.
- lambda는 정렬에 필요한 함수를 나타낸 것으로 student 요소를 받아서 student[2]를 반환한다.즉 정렬의 기준이
학생들의 학번이 되는 것이다. 람다식은 다음 절에서 자세히 설명한다.
students = [
('홍길동', 3.9, 20160303),
('김철수', 3.0, 20160302),
('최자영', 4.3, 20160301)
]
print(sorted(students, key=lambda student: student[2]))
출력결과
[('최자영', 4.3, 20160301), ('김철수', 3.0, 20160302), ('홍길동', 3.9, 20160303)] 감사합니다 .오늘도 좋은 강의 잘 들었습니다. 항상 명쾌한 강의 친절한 강의 잘 듣고 있습니다. 강사님의 열정적인 강의에 보답 하기위해 더욱 열심히 공부하겠습니다. 앞으로도 쭈우욱 더 좋은 강의 부탁드릴께요 수고하셨습니다 .감사합니다. ^^