알고리즘을 풀면서 리스트형을 자주 사용하다 보니 문자열로 풀기 좋은 문제를 리스트로 접근하려고 하여 한번 정리해봅니다.
문자열과 리스트는 둘 다 숫자/문자를 저장할 수 있는 자료형입니다. 하지만 서로 다른 자료형이죠.
입력하고 싶은 값이 Apple이라고 하면 다음과 같이 입력됩니다.
문자열:
str = 'Apple'
print (str)
>> Apple
print(str[0])
>> A
리스트:
list1 = ['Apple']
print(list1)
>> ["Apple"]
print(list1[0])
>> Apple
즉 문자열은 문자 자체를 저장하는 자료형이고 리스트는 문자열을 저장하는 자료형입니다.
문자열의 경우 숫자도 넣을 수 있지만 숫자를 문자열로 저장하는 방식이고
리스트는 문자열 외에 숫자형, 리스트, 딕셔너리 등 여러 자료형을 본래 형태를 유지하며 저장할 수 있습니다.
예시) 리스트에 여러 자료형 넣기
list1.append('Apple') # 문자열 넣기
list1.append(1) # 숫자 넣기
list1.append(['1','2']) # 리스트 넣기
list1.append({"a" : 1, "b":2}) # 딕셔너리 넣기
print(list1)
>> ['Apple', 1, ['1', '2'], {'a': 1, 'b': 2}]
특성이 이러하다 보니 문자를 다룰 때는 리스트형을 보통 사용하는 거 같습니다.
하지만 숫자형을 다룰 때에는 문자열을 사용할지 리스트를 사용할지 고민이 필요합니다.
먼저 문자열을 사용하면 쉽게 긴 숫자를 자르고 붙일 수 있습니다. 탐색도 쉽게 할 수 있죠.
심지어 다시 숫자형으로 변환하기도 쉽습니다.
예를들어 입력값이 12, 23, 34, 45로 주어졌을 때 순서대로 더해서 1223445로 만들어보라는 문제가 주어진다면
가장 먼저 떠오르는 방법은 수학적으로 접근하여 숫자형으로 푸는 방법일 것입니다.
\(12*10^6 +23*10^4..\) > 입력 방식에 따라 for문을 돌려야할 수도 있음 |
하지만 문자열을 이용하면 간단하게 해결할 수 있죠.
str = '12'+'23'+'34'+'45'
print(int(str))
>>12233445
리스트의 경우 원하는 숫자를 골라 제거, 원하는 위치에 추가, 순서를 뒤집기, 정렬 등에서 장점을 가집니다.
일반 숫자형으로 선언한 경우 for문을 돌려야 구할 수 있는 값들이 리스트형을 사용하면 간단하게 구현할 수 있는 경우가 많습니다.
또한 보통 여러 값이 입력되는 경우 리스트형으로 입력되는 경우가 많아 사용법을 익혀놓는 게 좋습니다.
파이썬 자료형 및 사용법 정리 예정
마무리로 문자열 ↔ 리스트 변환하는 법 정리해보겠습니다.
문자열 → 리스트
str ='happy'
list1 =[]
# 1.원본 그대로 저장
list1.append(str)
print(list1)
>> ['happy']
# 2. 한 문자씩 저장 (1)
for i in str:
list1.append(i)
print(list1)
>> ['h','a','p','p','y']
# 3. 한 문자씩 저장 (2)
list1 = list(str)
print(list1)
>> ['h','a','p','p','y']
리스트 → 문자열
list1 = ['2','.','p','e','o','p','l','e']
#1. join 이용
str1 = ' '.join(str(s) for s in list1)
print(str1)
#2. map 이용
str1 = ' '.join(map(str, list1))
print(str1)
리스트를 변환할때는 map을 이용하면 편리합니다. 다음번엔 map 사용법도 정리해보도록 하겠습니다.
'그 외' 카테고리의 다른 글
공부할 내용 정리중... (0) | 2022.08.12 |
---|---|
[다이어리] 7월 일정표 (0) | 2022.07.12 |
[다이어리] 듣고 싶은 인프런 강의 목록 (0) | 2022.07.11 |
[후기] azure 에져 AZ-104 시험 후기 (2022년 6월) (3) | 2022.07.10 |
[다이어리] 2022 하반기 목표 설정 (0) | 2022.07.07 |