Notice
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

22gamin

문자열이나 정수, 리스트로 변환하기(map,lambda,filter,split) 본문

python

문자열이나 정수, 리스트로 변환하기(map,lambda,filter,split)

22gamin 2024. 1. 22. 18:45

1. 문자열을 리스트로 변환하기

 

간단하게 list()함수를 사용하여 문자열을 리스트로 변환할 수 있다.

띄어쓰기는 공백으로 따로 들어감

>>> string = 'Hello !'
>>> new_list = list(string)

>>> print(new_list)
['H','e','l','l','o',' ','!']

 

2. 정수를 리스트로 변환하기

 

1)

각 자리수를 원소로 갖는 리스트로 변환하기 위해 바로 list()함수를 사용하면 

>>> age = 12345
>>> age_list = list(age)

TypeError: 'int' object is not iterable

 

다음과 같은 에러가 뜬다. 정수형은 iterable이 아니므로 'list()'함수로 직접 변환할 수 없다.

 

 

list()함수를 활용해 정수를 list로 변환하고 싶다면 정수를 문자열로 변환한 후 각 문자를 리스트의 원소로 만들어야한다.

>>> age = 12345
>>> age_list = list(str(age))

>>> print(age_list)
['1','2','3','4','5']

 

다만 문자열로 바꾸어 리스트가 생성되었기 때문에 리스트의 원소를 사용해야 한다면 정수형이 아닌 문자열이므로 int()함수를 이용해 타입 변환을 해줘야하는 번거로움이 있다.

 

 

 

2) map함수를 활용한 리스트 변환

 

1)의 방법보다 더 간편하고 많이 쓰는 방법은 map함수를 사용하는 것이다.

list(map(함수, 리스트))

tuple(map(함수, 튜플))

 

>>> age = 12345
>>> age_list = list(map(int,str(age)))
>>> age_list

[1,2,3,4,5]

 

굳이 결과값이 문자형으로 나오지 않고 바로 정수형으로 나온다.

map함수에 str(age)를 하지 않고 그냥 age만 넣는다면 그냥 정수만 뱉으므로 타입에러가 난다.

map 함수는 반복 가능한 객체에 대해서만 작동한다.

 

>>> age = 12345
>>> age_list = list(map(str,age))
>>> age_list

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

더욱 간편하다.

 

또한 map함수에는 리스트 뿐만 아니라 모든 반복 가능한 객체를 넣을 수도 있다.

>>> a = list(map(str,range(5)))
>>> a
['0','1','2','3','4']

 

 

 

+ upgrate

map함수의 반환 값은 map 객체이기 때문에 해당 자료형을 list 혹은 tuple로 형 변환을 시켜야한다.

또한

함수의 동작은 두 번째 인자로 들어온 리스트나 튜플을 첫 번째 인자로 들어온 함수에 하나씩 집어넣어서 함수를 수행한다.

-> map(적용시킬 함수, 적용할 값들)

 

>>> nums = [1,2,3,4,5]
>>> result = []

>>> for i in nums:
>>> 	result.append(i+1)

>>> nums
[2,3,4,5,6]

 

 

 

보너스) lambda 함수

 

def를 이용하여 다른 곳에 함수를 만들고 그걸 호출해서 사용하는 수고가 필요하지 않은 가벼운 함수

 

lambda 라는 키워드를 입력하고 뒤에는 매개변수(인자)를 입력하고 클론(:)을 넣은 다음에 그 매개변수(인자)를 이용한 동작들을 적으면 됨

-> lambda 인자: 표현식

-> lambda x: x*2

 

>>> result = list(map(lambda x: x+1, [1,2,3,4,5]))
>>> result
[2,3,4,5,6]

 

 

 

보너스) filter 함수

filter 함수는 map 함수와 비슷하게 리스트나 튜플을 두번째 인자로 받고 첫번째 인자로 함수를 받는다.

-> filter(함수, 리스트나 튜플)

 

일반함수

>>> result = list(filter((lambda x: x % 2 == 0), range(10)))
>>> result
[0,2,4,6,8]

 

 

 

보너스) split()함수

split()함수는 문자열을 특정 구분자를 기준으로 나누는 함수이다. 이 함수는 문자열을 분할하여 새로운 리스트 객체를 반환한다. 

 

split(separator, maxsplit)

separator: 분할 기준이 되는 문자열(혹은 문자) ex) 공백(스페이스,탭,개행 등)

maxsplit: 분할할 최대 횟수를 나타내는 정수이며, 생략 가능

 

>>> say = "Hi, Hello"
>>> words = say.split()
>>> words

['Hi,','Hello']

 

 

분할을 수행할 최대 횟수 1개로 제한한 경우

>>> say = "sing,a,song"
>>> words = say.split(",",1)
>>> words

['sing', 'a,song']

 

 

 

+ input() - 입력받을 때

 

input().split()으로 값을 여러개 입력 받고 정수, 실수로 변환할 때 map을 사용함

-> input().split()의 결과가 문자열 리스트라서 map함수가 사용가능했던 것!

 

>>> a = input().split()
1 2
>>> a
['1','2']

 

map함수를 활용하여 정수로 변환

>>> a = map(int,input().split())
1 2
>>> a
<map object at 0x03DFB0D0>

>>> list(a)
[1,2]

 

 

 

 

 

 

'python' 카테고리의 다른 글

lambda 함수  (0) 2024.05.08
정수, 알파벳 관련 함수  (1) 2024.01.26
reverse와 reversed  (0) 2024.01.15
리스트 관련 함수  (0) 2023.11.12
분수의 계산  (1) 2023.11.12