[파이썬] 리스트 변형 :: 리스트를 원하는 형태로 바꾸기, 리스트 형변환
어떤 리스트를 원하는 형태로 변형하기
파이썬은 list 안의 모든 원소를 내가 원하는 형태로 변형하기 쉽다.
나는 문자열 list를 int형 리스트로 변환할 때 많이 사용한다. 특히, 백준 문제를 풀 때input함수
나readline함수
를 사용하여 숫자를 입력 받았을 때 많이 사용한다.
그 외에도 기존 list의 원소들을 모두 제곱할 때나 원하는 형태로 바꾸고 싶을 때 유용하다!!
방법 1: map 함수 사용하기
첫 번째 방법은 map내장 함수
를 사용하는 것이다.
map함수
는 저번에 작성한 글([파이썬] 리스트 필터링)에서 설명한 filter함수
의 사용법과 비슷하다.map함수
는 한 원소에 대해 원하는 대로 변형한 것을 반환하는 함수
와 변형할 대상인 list
가 필요하다.map함수
는 다음과 같이 사용하면 된다.
예를 들어서, 내가
originalList = [2, 4, 6, 8, 10, 12]
위와 같은 list의 원소들을 모두 2로 나눈 list를 구하고 싶다고 해보자.
먼저, 숫자를 2로 나눈 것을 반환하는 함수를 만든다.
def divideByTwo(x):
return x/2
다음, divideByTwo함수를 인자로 하는 map함수
를 쓰면 끝이다.
newList = list(map(divideByTwo, originalList))
그러면 newList의 원소들은 [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]가 된다.
참고로 map함수
를 list()
로 감싸준 이유는 map함수
는 iterable(map object)
을 반환했기 때문이다. 그래서 list로 쓸려면 우리가 list로 만들어 줘야 한다.
방법 2: List Comprehension 사용하기
두 번째 방법은 List Comprehension을 사용하는 것이다.
List Comprehension에 대해서는 저번에 작성한 글([파이썬] 리스트 필터링)에서 많이 설명했으므로 사용하는 법 위주로 보여주겠다.
originalList에 있는 모든 원소들에 2를 곱한 새로운 리스트를 얻으려면 다음과 같이 할 수 있다.
originalList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
doubledList = [2*x for x in originalList]
x라는 변수를 사용하여 originalList에 있는 모든 원소들을 반복하며 2*x의 형태로 doubledList에 저장한 것이다.
따라서, doubledList는 [2, 4, 6, 8, 10 ,12, 14, 16, 18, 20]가 된다.
More Examples
문자가 원소인 리스트 int형 리스트로 형 변환하기
방법 1: map
map함수
- 형식:
map(함수_이름, iterable)
map함수
의 인자로 들어가는 함수는 람다를 쓰면 편하다.- 리턴 타입:
iterator (map object)
- Python3 내장 함수이다.
originalList = ['2', '4', '6', '8', '10', '12']
intList = list(map(int, originalList))
print(intList)
# 출력 결과: [2, 4, 6, 8, 10, 12]
방법 2: List Comprehension
List Comprehension
originalList = ['2', '4', '6', '8', '10', '12']
intList = [int(x) for x in originalList]
print(intList)
# 출력 결과: [2, 4, 6, 8, 10, 12]
댓글
이 글 공유하기
다른 글
-
Rye로 파이썬 프로젝트 세팅해보기!
Rye로 파이썬 프로젝트 세팅해보기!
2024.07.15 -
[파이썬] Thread를 사용하기 전에 알아야 할 몇 가지 주의점들
[파이썬] Thread를 사용하기 전에 알아야 할 몇 가지 주의점들
2020.05.23 -
[파이썬] 리스트 필터링 :: 리스트에서 원하는 요소만 추출하기
[파이썬] 리스트 필터링 :: 리스트에서 원하는 요소만 추출하기
2019.08.10