[Python] 중요하지만 헷갈리는 문법들을 정리해보자!

승민·2022년 6월 29일
0

Algorithm

목록 보기
19/19

코딩 테스트를 경험하다 보면 외부 IDE를 사용하면 안되는 시험이 종종 있습니다. 당장 토요일에 있을 부스트캠프 코딩 테스트에서도 외부 IDE를 사용하면 안된다고 합니다. 문제는 이러한 경우 시간을 굉장히 단축시킬 수 있지만 항상 사용되는 문법은 아니라 자주 까먹는 문법들을 기억해내기 쉽지 않습니다. 그래서 정리해보려고 합니다!

map함수

먼저 map 함수는 map(function, iterable) 형태로 이루어져 있습니다. map 함수의 동작은 두 번째 들어온 반복 가능한 인자를 첫 번째 들어온 함수 인자에 하나씩 집어 넣어 실행시킵니다. 코딩 테스트에서 여러 개의 입력 값을 한 번에 받고 싶을 때나 배열에 있는 값들을 하나의 문자열로 출력하고 싶을 때 사용합니다. 또한 map 함수의 반환 값은 map 객체 형이기 때문에 list나 tuple 등으로 형변환을 시켜주어야 합니다.

join 함수

join 함수는 매개 변수로 들어온 list에 있는 요소 하나씩을 모두 합쳐서 하나의 문자열로 변환하는 함수입니다. ''.join(리스트)의 형태로 주로 사용하며 '_'.join(리스트)와 같이 구분자를 넣어주면 요소와 요소 사이에 구분자를 추가하여 문자열을 만들 수 있습니다.

예제

위의 map 함수와 join 함수를 이용하여 다음과 같이 사용할 수 있습니다. 만약 arr = [1, 2, 3, 4, 5]와 같이 정수 배열이 있을 때 문자열 "12345"를 출력하고 싶으면 다음과 같이 map과 join을 이용하면 됩니다.

arr = [1, 2, 3, 4, 5]
str_arr = ''.join(map(str, arr))

이 경우 arr에 있는 요소 하나 하나에 str함수를 적용하여 문자열로 형 변환을 시켜준 상태에서 모든 요소를 합친 상황입니다.

배열에서 특정 원소 삭제하기

배열에서 특정 원소를 삭제해야 하는 경우가 있습니다. 이 때 del 함수나 remove 함수를 이용해 삭제 가능합니다. 먼저 del 함수는 배열의 인덱스를 활용하여 배열의 원소를 삭제합니다.

arr = [1, 2, 3, 4, 5]
del arr[3]

del arr[3]이므로 3번 인덱스에 존재하는 4가 삭제되어 arr = [1, 2, 3, 5]가 됩니다.
한 번에 여러 개의 원소를 삭제하고 싶을 때에는 del arr[1:3]과 같이 범위를 지정하는 :를 활용하면 됩니다. 이 때 시작 인덱스는 1번이고 마지막 인덱스는 3이 아닌 2임에 유의해야 합니다. 따라서 1, 2번 인덱스의 값인 2, 3이 사라지고 arr = [1, 4, 5]가 됩니다.

remove를 이용하면 원소의 값을 이용해 원소를 삭제할 수 있습니다.

arr = [1, 2, 3, 4, 5]
arr.remove(4)

위의 예시와 같이 remove안에 삭제하고자 하는 원소를 적으면 배열에서 4가 삭제되어 arr = [1, 2, 3, 5]가 남습니다.

배열의 모든 원소를 삭제하고 싶으면 다음과 같이 clear()를 사용하면 됩니다.

arr = [1, 2, 3, 4, 5]
arr.clear()

문자열 안에서 문자 찾기

문자열.find(찾고자 하는 문자)를 이용하면 찾고자 하는 문자의 인덱스 값을 반환합니다. 만약 찾고자 하는 문자가 문자열에 존재하지 않으면 -1을 반환합니다.

s = 'ABCDEFG'
s.find('A')

위의 예시의 경우 A가 0번 인덱스에 위치하므로 0을 반환합니다.
문자열.startswith(문자, 찾기 시작할 지점)와 문자열.endswith(문자, 찾기 시작할 지점, 끝날 지점)을 통해 시작하려는 문자와 끝을 내는 문자가 인자에 있는 문자와 일치하는지 확인할 수 있습니다. 만약 일치한다면 True를 반환하고 그렇지 않으면 False를 반환합니다.

s = 'ABCDEFG'
s.startswith('D')
s.startswith('C', s.find('C'))
s.endswith('G')
s.endswith('G', 0, 2)

딕셔너리

딕셔너리를 다른 배열과 같은 자료구조에 비해 적게 사용해서 그런지 항상 헷갈립니다.

  • 딕셔너리에 새로운 key와 value를 추가하고 싶을 때 dict에 key가 있는지 확인 후 없으면 dict[key] = value 형태로 추가합니다.

  • 딕셔너리에 있는 키 값들만 추출하고 싶을 때 dict.keys()를 사용하면 딕셔너리 안의 키 값들만 반환됩니다.

  • 딕셔너리에 있는 value 값들만 추출하고 싶을 때 dict.values()를 사용하면 딕셔너리 안의 value 값들만 반환됩니다.

  • 딕셔너리를 정렬하기 위해서는 dict.items()를 이용하면 됩니다.

# 키 값 기준으로 오름차순으로 정렬합니다.
d = sorted(dict.items())
# 키 값 기준으로 내림차순으로 정렬합니다.
d = sorted(dict.items(), reverse = True)
# value 값 기준으로 정렬합니다.
d = sorted(dict.items(), key = lambda x : x[1]) 
profile
안녕하세요 승민입니다

0개의 댓글