티스토리 뷰

두 가지 정렬 방법

원본 정렬(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))
  1. 만들고 clean_james = []
  2. 나열하고 for each_t in james:
  3. 변환하고 sanitize(each_t)
  4. 추가하기 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) 기초
댓글