티스토리 뷰
input() 이 sys.stdin.readline() 보다 느린 이유
input() 내장 함수는 sys.stdin.readline()과 비교해서 prompt message를 출력하고, 개행 문자를 삭제한 값을 리턴하기 때문에 느리다.
input() 과 sys.stdin.readline() 의 차이점
일단 sys.stdin.readline()과 input()은 같은 역할을 하지 않는다.
input() 내장 함수는 parameter로 prompt message를 받을 수 있다.
따라서 입력받기 전 prompt message를 출력해야 한다.
물론 prompt message가 없는 경우도 있지만, 이 경우도 약간의 부하로 작용할 수 있다.
하지만, sys.stdin.readline()은 prompt message를 인수로 받지 않는다.
또한, input() 내장 함수는 입력받은 값의 개행 문자를 삭제시켜서 리턴한다.
즉, 입력받은 문자열에 rstrip() 함수를 적용시켜서 리턴한다.
반면에 sys.stdin.readline()은 개행 문자를 포함한 값을 리턴한다.
sys.stdin.readline() 사용법
1. 문자열을 받을 때
import sys
sentence = sys.stdin.readline()
sys.stdin.readline()은 return값이 문자열이므로 그냥 문장을 하나 받을 때 사용가능하다.
sys.stdin.readline()을 출력하면 문자열에 개행문자(\n)가 기본으로 추가됨도 확인 가능하다.
2. 정수를 받을 때
import sys
number = int(sys.stdin.readline())
sys.stdin.readline()의 return 값은 문자열(string)이기 때문에 정수로 입력받으려면 형변환을 해줘야한다.
sys.stdin.readline()으로 받은 문자열은 개행문자(\n)을 포함한다.
문자열을 int()로 형변환을 해주면 개행문자는 사라지고 정수형태만 남는다.
3. 여러 개의 정수들을 받을 때
import sys
a,b,c = map(int,sys.stdin.readline().split())
map()은 반복 가능한 객체(리스트 등)에 대해 각각의 요소들을 지정된 함수로 처리해주는 함수이다.
위와 같이 사용한다면 a,b,c에 대해 각각 int형으로 형변환을 할 수 있다.
4. 문자열 N개를 입력 받아 리스트에 저장할 때
import sys
n = int(sys.stdin.readline())
data = [sys.stdin.readline().strip() for i in range(n)]
문자열을 N개 라고 지정되어있는 경우 for문을 사용해 문자열 N개를 리스트에 저장할 수 있다.
여기서 strip()은 문자열 앞과 끝의 공백문자를 제거해주는 함수다.
출처: https://buyandpray.tistory.com/7
'Computer Science > Python' 카테고리의 다른 글
[파이썬] 클래스(class) (0) | 2022.06.29 |
---|---|
[파이썬] 함수 (0) | 2022.06.26 |
[파이썬] while (0) | 2022.06.06 |
[파이썬] for (0) | 2022.06.06 |
[파이썬] if (0) | 2022.06.06 |