Python 리스트 자료형의 메소드와 내장함수에 대해서는 https://rfriend.tistory.com/330 를 참고하세요.
이번 포스팅에서는 리스트(List) 자료형에 대한 유용한 활용 팁 네가지를 소개하려고 합니다.
(1) 리스트의 문자형 원소를 숫자형 원소로 바꾸기 (혹은 그 반대)
(2) 리스트의 원소를 사전형의 Key:Value 기준으로 매핑하여 변환하기
(3) 리스트에서 또 다른 리스트의 겹치는 원소를 빼기
(4) 리스트 원소 정렬하기 (내림차순, 오름차순)
(1) 리스트의 문자형 원소를 숫자형 원소로 바꾸기 (혹은 그 반대)
list(map(data type, list)) 으로 리스트 내 원소의 데이터 유형을 변환할 수 있습니다. 아래는 순서대로 리스트 내 문자형 원소를 숫자형으로 변환, 숫자형 원소를 문자형 원소로 변환한 예입니다.
## convert a list with string-type elements into a list with numeric-type elements
list(map(int, ['1', '2', '3'])) # 문자형 원소
# [1, 2, 3] # --> 숫자형으로 변환됨
## convert a list with numeric-type elements into a list with string-type elements
list(map(str, [1, 2, 3])) # 숫자형 원소
# ['1', '2', '3'] # --> 문자형으로 변환됨
(2) 리스트의 원소를 사전형의 Key:Value 기준으로 매핑하여 변환하기
리스트 내 원소를 다른 값으로 변환할 때 사전형(Dictionary)의 Key:Value 매핑을 이용하면 편리합니다. List Comprehension 을 이용해서 리스트 원소별로 for loop 을 돌면서 Dictionary 의 Dict[Key] 로 Value에 접근해서 키별로 값을 매핑해서 변환된 값으로 새로운 리스트를 만들어줍니다.
## a List
my_list = ['c', 'a', 'd', 'b']
## a Dictionary, which will be used for mapping, converting
my_dict = {
'a': 1,
'b': 2,
'c': 3,
'd': 4
}
## accessing the value in a Dictionary using the key
my_dict['a']
# 1
## converting elements in a list using a Dictionary (Key: Value)
[my_dict[k] for k in my_list]
# [3, 1, 4, 2]
(3) 리스트에서 또 다른 리스트의 겹치는 원소를 빼기
리스트와 리스트 간 중복되는 원소 값 빼기는 TypeError: unsupported operand type(s) for -: 'list' and 'list' 에러를 반환합니다.
## sample lists
a = [1, 2, 3, 4, 5]
b = [4, 5, 6, 7, 8]
## TypeError: unsupported operand type(s) for -: 'list' and 'list'
a - b
# ---------------------------------------------------------------------------
# TypeError Traceback (most recent call last)
# <ipython-input-36-4dfa3698e4b8> in <module>
# ----> 1 a- b
# TypeError: unsupported operand type(s) for -: 'list' and 'list'
리스트 간 겹치는 값을 제거하려면 먼저 리스트를 Set 으로 변환을 해주고, 두 개의 Sets 간에 빼기를 해준 다음에, 집합 간 빼기 가 된 결과를 다시 list() 를 사용해서 리스트로 최종 변환해주면 됩니다.
## substraction between lists using set
list(set(a) - set(b))
# [1, 2, 3]
list(set(b) - set(a))
# [8, 6, 7]
(4) 리스트 원소 정렬하기 (내림차순, 오름차순)
list.sort() 메소드를 사용해서 리스트 원소 (숫자형) 를 오름차순으로 정렬할 수 있습니다.
내림차순 정렬을 하려면 list.sort(reverse=True) 처럼 옵션을 추가해주면 됩니다.
## 리스트 원소 정렬
c = [8, 6, 7]
c.sort()
c
# [6, 7, 8]
## 리스트 원소 역순으로 정렬
c.sort(reverse=True)
c
# [8, 7, 6]
이번 포스팅이 많은 도움이 되었기를 바랍니다.
행복한 데이터 과학자 되세요! :-)