파이썬 리스트 형변환 - paisseon liseuteu hyeongbyeonhwan

[파이썬] 리스트 변형 :: 리스트를 원하는 형태로 바꾸기, 리스트 형변환

  • 2019.08.15 22:28
  • Programming Language/Python

어떤 리스트를 원하는 형태로 변형하기

파이썬은 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):
     returnx/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]

업데이트: October 15, 2019

내장함수(map)참고

list_str = ['1','2','3','4'] list_int = list(map(int, list_str)) # 정수로 변환 list_str2 = list(map(str, list_int)) # 다시 문자열로 변환 print(list_int) print(list_str2)

[Output] [1, 2, 3, 4] ['1', '2', '3', '4']

이전 다음

리스트의 각 원소의 타입을 바꾸는 방법입니다.
이건 사실 각 원소의 타입을 하나로 통일하는 방법이라 보시면 됩니다. 파이썬의 내장함수인 map 함수를 이용하면 간단하게 할 수 있습니다. 보통 숫자가 문자열로 되어있는 경우를 바꾸고 싶을 때 한번에 할 수 없는 방법을 찾을텐데 map을 이용해 간단하게 바꿀 수 있습니다.

문자열 숫자로 바꾸기

당연한 얘기겠지만 a,b,c,d 같은 완벽히 문자인 경우에는 숫자로 바꿀 수 없습니다. 숫자인데 문자열로 되어있는 경우에만 가능합니다.

list_ = ['1','2','3','4'] list_int = list(map(int,list_)) list_int

실제로 타입이 잘 바뀌었는지 살펴보겠습니다.

for element in list_int: print(type(element))

숫자를 문자열로 바꾸기

list_str = list(map(str,list_int)) list_str

숫자를 bool으로 바꾸기

작업자가 False는 0, True는 1로 변경하는 경우가 많습니다.
많은 코드가 이런 식으로 받아들이기도 합니다.
이를 다시 True,False로 바꿔야만 한다면 다음과 같이 합니다.
0,1 이외의 숫자는 모두 True로 반환합니다.

list_ = [0,1,2] list_bool = list(map(bool,list_)) list_bool

bool을 숫자로 바꾸기

False 는 0, True는 1 로 반환합니다.
위에서 보인 list_bool을 다시 숫자로 반환하겠습니다.

list_int = list(map(int,list_bool)) list_int

관련 포스팅

[Python] list​

Toplist

최신 우편물

태그