Python – input, map, filter 관련 정리
input
- input 명령어 사용 예시
# 문자열 입력
a = input()
print(a)
# "1,2,3,4,5,6,7,8,9,10"
# split 명령어로 입력받은 문자열을 구분자를 통해 나눠 값을 저장합니다 (미입력시 공백이 구분자로 사용됩니다)
a = input().split(',')
print(a)
# ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
a,b = input().split(',')
print(a,b)
# 1 2
- sys.stdin.readline 명령어 (성능 개선)
# sys.stdin.readline 명령어는 다량의 입력을 받을수록 input 명령어보다 높은 성능을 가집니다
import sys
a = []
for i in range(5):
a.append(int(sys.stdin.readline()))
# 입력
1
2
3
4
5
print(a)
# [1, 2, 3, 4, 5]
map

- map 명령어 사용 예시
# input 명령은 기본적으로 문자 형태를 가집니다
# map 명령어를 통해 입력받은 값을 특정 형태로의 반환을 하는데 사용할 수 있습니다
# 객체반환
word = map(int, input().split())
print(word)
# <map object at 0x000002C1D6407B50>
# map 사용법
word_list = list(map(int, input().split()))
print(word_list)
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a, b, c = map(int, input().split())
print(a,b,c)
# 1 2 3
- 응용
- calc 함수
- 5 이하로 받은값만 *2 연산 후 반환
- for문 배열을 통해 리스트 반환
- if문을 통해 5 이후의 값으로 반환되는 None 처리
- calc 함수
1. 일반 함수 사용
def calc(num):
if num > 5:
return None
return num * 2
result = [i for i in map(calc, range(1,10)) if i is not None]
# [2, 4, 6, 8, 10]
2. 람다 함수 사용
result = [i for i in map(lambda calc: None if calc > 5 else calc*2, range(1,10)) if i is not None]
# [2, 4, 6, 8, 10]
filter

- filter 명령어 사용 예시
# filter 명령어는 map 명령어와 입력받은 값을 조건에 따라 처리하는 면에서는 유사합니다
# 다만 map은 입력받은 값을 특정 조건에 따라 다른 형태로 변환하여 반환하지만 filter의 경우 조건의 참/거짓 여부를 대해 입력받은 값을 그대로 반환합니다
# 객체반환
word = filter(int, input().split())
print(word)
# <filter object at 0x000001E8792F9D60>
# filter 사용법
def func(x):
return x < 0
print(list(filter(func, [-3,-2, 0, 5, 7])))
# [-3, -2]
a, b, c = filter(int, input().split())
print(a, b, c)
# 1 2 3
- 응용
- calc 함수
- 5 이하로 받은값만 반환
- for문 배열을 통해 리스트 반환
- calc 함수
1. 일반 함수 사용
def calc(num):
if num > 5:
return False
return num
result = [i for i in filter(calc, range(1,10))]
# [1, 2, 3, 4, 5]
2. 람다 함수 사용
result = [i for i in filter(lambda calc: calc<=5, range(1,10))]
# [1, 2, 3, 4, 5]
map 과 filter의 차이점
map의 경우 값이 조건에 맞는 경우 결과값을 연산하여 저장시키지만 filter의 경우 값이 조건에 맞는 경우 True를 반환하여 True에 해당하는 값을 저장시킨다