[Python] 한 줄에 여러 개 입력받기(map, split)

2024. 5. 17. 12:32·Python

한 줄에 여러 개 입력받기

Python 문제를 해결하다 보면, 한 줄에 여러 개의 입력을 받아야 하는 경우가 생긴다. 그러나 Python은 개행('\n')을 하나의 입력으로 인식하기 때문에 '5 4 1 3 2', '7 3'과 같이 인식한다. 이때, map 함수와 split 함수를 활용하면 각각의 정수로 분리하여 여러 개의 변수에 저장할 수 있다.

한 줄에 여러 개 입력받기

한 줄에 여러 개 입력을 받는 형태를 살펴본 후에 map과 split 함수에 대해 알아본다. 관련 자료를 찾다가 사용 예시가 있어서 가져왔다.

  • 예시 출처
# 1. 값 두 개를 입력받아 변수 a와 b에 저장 (띄어쓰기 구분)
a, b = input().split() # 문자열
a, b = map(int, input().split()) # 정수형
a, b = map(float, input().split()) # 실수형

# 2. 1차원 배열 입력받기 = 정수형 리스트로 저장
num_list = list(map(int, input().split())) # 입력 : 1 2 3 /출력 : [1, 2, 3] 

# 3. 문자열 여러줄 입력받기 
s_list = [input() for _ in range(n)] # 예시로 n에 3넣어 3줄 입력받기(엔터로 구분)

# 4. 한 문자열(숫자ex.12345) 받아서 한 글자씩 나누어 더하기
s = input()
for i in range(len(s)):
    sum += int(s[i])  # 문자열은 슬라이싱 가능!! + 문자열 형변환

# 5. 띄어쓰기 없이 정수 여러개 입력받아 2차원 배열로 저장하기 
two_d = [list(map(int, input())) for _ in range(n)] # 예시는 4줄 입력받음

# 6. 열은 띄어쓰기로 행은 엔터로 구분하여 입력받아 2차원 배열 저장하기
t_d = [list(map(int, input().split())) for _ in range(n)] # 예시는 4줄. 4.-와 결과는 같다.

map 함수

개념

map 함수는 iterable의 각 요소에 대해 function 함수를 적용한 결과를 새로운 iterator로 반환한다.

  • iterable(반복 가능한 자료형) : 리스트, 튜플 등
map(function, iterable)

사용 (1) - square

다음은 square 함수와 numbers 리스트를 map 함수에 적용하는 예제이다.

def square(x):
    return x**2

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)
print(list(squared_numbers))

#result
>> [1, 4, 9, 16, 25]

사용 (2) - add

다음은 add 함수와 numbers 리스트를 map 함수에 적용하는 예제이다. 이번 예제처럼 함수의 매개 변수 개수에 따라  iterable을 여러 개 넣어줄 수도 있다.

def add(x, y):
    return x + y

numbers1 = [1, 2, 3, 4, 5]
numbers2 = [10, 20, 30, 40, 50]
added_numbers = map(add, numbers1, numbers2)
print(list(added_numbers))  # [11, 22, 33, 44, 55]

split 함수

개념

문자열을 일정한 규칙으로 잘라 리스트로 만들어주는 함수이다.

  • 구분자(default = ' ') : 문자열을 자르는 기준
  • 분할 횟수(default = -1) : 앞에서부터 구분자로 문자열을 자르는 횟수
문자열.split()
문자열.split('구분자')
문자열.split('구분자', 분할횟수)
문자열.split(sep='구분자', maxsplit=분할횟수)

사용 (1) - 기본 형태

string1 = '1 2 3 4 5 6 7 8 9 0'
print(string1.split())

#result
>> ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']

사용 (2) - 구분자, 분할횟수 지정

string1 = '1 2 3 4 5 6 7 8 9 0'
print(string1.split(' ', 3))

# result
>> ['1', '2', '3', '4 5 6 7 8 9 0']

Reference

https://dotiromoook.tistory.com/28

https://happyeuni.tistory.com/18

'Python' 카테고리의 다른 글

[Python] 특정, 다중 조건으로 리스트 정렬하기  (0) 2024.11.04
[Python] 셰이프 파일(shp) 데이터의 위도, 경도 및 주소 추출하기  (1) 2024.09.27
[Python] 데크(Deque) 개념과 활용  (0) 2024.05.15
[Python] enumerate() 함수 개념과 활용  (1) 2024.03.30
[Python] 람다(Lambda) 함수 개념과 활용  (0) 2024.03.28
'Python' 카테고리의 다른 글
  • [Python] 특정, 다중 조건으로 리스트 정렬하기
  • [Python] 셰이프 파일(shp) 데이터의 위도, 경도 및 주소 추출하기
  • [Python] 데크(Deque) 개념과 활용
  • [Python] enumerate() 함수 개념과 활용
기억에 남는 블로그 닉네임
기억에 남는 블로그 닉네임
  • 기억에 남는 블로그 닉네임
    얕게, 깊게
    기억에 남는 블로그 닉네임
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
    • 분류 전체보기
      • Data Engineering
        • Airflow
        • 빅데이터
        • 자동화
        • 기타
      • Infra
        • AWS
        • Terraform
        • [인프라 구축기] Terraform 활용 AWS ..
      • CS
        • 자료구조
        • 알고리즘
        • 네트워크
        • 데이터베이스
        • 이것이 취업을 위한 코딩 테스트다 with 파이썬
      • Python
      • Web
      • Git
      • 기타
        • 취업 & 진로
        • 회고록
        • 기타
      • 프로젝트 단위 공부
        • [부스트코스] DataLit : 데이터 다루기
        • [개인 프로젝트] 공모전 크롤링
        • [개인 프로젝트] FC Online 공식 경기 분..
        • 프로젝트 개선 방안
      • [프로그래머스] 데이터 엔지니어링 데브코스 3기
        • TIL(Today I Learn)
        • 숙제
        • 기타
      • 알고리즘 연습
        • 프로그래머스
        • 백준
  • 링크

    • 깃허브
    • 링크드인
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
기억에 남는 블로그 닉네임
[Python] 한 줄에 여러 개 입력받기(map, split)
상단으로

티스토리툴바