22gamin
문자열이나 정수, 리스트로 변환하기(map,lambda,filter,split) 본문
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 |