티스토리 뷰
두 가지 정렬 방법
원본 정렬(In-place sorting)
변환하고 대체합니다.
리스트의 sort() 사용
사본 정렬(Copied sorting)
변환하고 반환합니다.
내장함수 sorted() 사용
문자열 정렬 우선순위
하이픈 - 점 - 콜론
>>> data = [6, 3, 1, 2, 4, 5] >>> data [6, 3, 1, 2, 4, 5] >>> data [6, 3, 1, 2, 4, 5] >>> data.sort() >>> data [1, 2, 3, 4, 5, 6] >>> data = [6, 3, 1, 2, 4, 5] >>> data [6, 3, 1, 2, 4, 5] >>> data2 = sorted(data) >>> data [6, 3, 1, 2, 4, 5] >>> data2 [1, 2, 3, 4, 5, 6] >>>
지능형 리스트
"""지능형 리스트 사용 전""" clean_james = [] clean_julie = [] clean_mikey = [] clean_sarah = [] for each_t in james: clean_james.append(sanitize(each_t)) for each_t in julie: clean_julie.append(sanitize(each_t)) for each_t in mikey: clean_mikey.append(sanitize(each_t)) for each_t in sarah: clean_sarah.append(sanitize(each_t))
- 만들고
clean_james = []
- 나열하고
for each_t in james:
- 변환하고
sanitize(each_t)
- 추가하기
append
단 한줄의 코드로 변환
clean_james = [sanitize(each_t) for each_t in james]
"""지능형 리스트 사용 후""" clean_james = [sanitize(each_t) for each_t in james] clean_julie = [sanitize(each_t) for each_t in julie] clean_mikey = [sanitize(each_t) for each_t in mikey] clean_sarah = [sanitize(each_t) for each_t in sarah]
파이썬 집합
집합 안에서의 데이터 항목은 순서가 없고 중복된 데이터를 가질 수 없다.
>>> distances = set() >>> distances = {10.6, 11, 8, 10.6, "two", 7} >>> distances {8, 10.6, 11, 'two', 7}
슬라이스
리스트에서 둘 이상의 항목에 접근합니다.
my_list[3:6]
팩토리 함수
특정 형의 데이터 항목을 새로 만들기 위해 사용
예) set()
: 집합을 새로 만든다.
""" 데이터의 형식을 'mins.secs'로 변환한다. """ def sanitize(time_string): if '-' in time_string: splitter = '-' elif ':' in time_string: splitter = ':' else : return(time_string) (mins, secs) = time_string.split(splitter) return (mins + '.' + secs) """ 파일 읽기 """ def get_coach_data(filename): try: with open(filename) as f : data = f.readline() return (data.strip().split(',')) except IOError as ioerr: print('File error' + str(ioerr)) return (None) james = get_coach_data('james.txt') julie = get_coach_data('julie.txt') mikey = get_coach_data('mikey.txt') sarah = get_coach_data('sarah.txt') """ 집합으로 변환 > 정렬 > 출력 """ print(sorted(set(sanitize(each_t) for each_t in james))[0:3]) print(sorted(set(sanitize(each_t) for each_t in julie))[0:3]) print(sorted(set(sanitize(each_t) for each_t in mikey))[0:3]) print(sorted(set(sanitize(each_t) for each_t in sarah))[0:3])
참고자료
[번역] 함수형 프로그래밍(Functional Programming) 기초
댓글