Python

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 처리
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문 배열을 통해 리스트 반환
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에 해당하는 값을 저장시킨다

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.