본문 바로가기
python3/문법

[python문법] input() vs sys.stdin

by MeaninGood 2022. 1. 13.

1. input()

  •  파이썬 내장 함수
  • input -> 개행 문자 벗기고 -> 문자열로 변환 -> return

 

2. sys.stdin

  • file object
  • 입력 -> buffer에 저장 -> 읽기 : buffer에 저장하고 읽기만 하기 때문에 시간 감소함

 

* 입력 속도 비교

1. for line in sys.stdin

nums = []
for line in sys.stdin :
    nums.append(line)

print(nums)

숫자 한 줄씩 입력 / 결과

1
2
3
...(중략)
['1\n', '2\n', '3\n'] ## 개행문자 함께 출력됨

 

# 참고 -- rstirp으로 개행문자 제거

nums = []
for line in sys.stdin :
    nums.append(line.rstirp()) ## rstrip으로 개행 문자 제거

print(nums)

숫자 한 줄씩 입력 / 결과

1
2
3
...(중략)
['1', '2', '3']

 

 

 

2. 한 줄 입력

x, y = sys.stdin.readline().split()

 

 

 

3. 여러 줄 입력

N = int(input())
a= [sys.stdin.readline() for _ in range(N)]
print(a)

'''
(입력)

3 # N
10 # 총 3번의 입력창 생성
20
30


(결과)
['1\n', '2\n', '3\n']
'''

 

 

 

4. sys.stdin.readline()

for x in sys.stdin.readline() :
    print(x)

숫자 한 줄에 입력 / 결과

12 3 4 5 (입력)

(결과)
1
2

3

4

5

 

 

 

5. for line in sys.stdin

for line in sys.stdin :
    print(line)

입력 / 결과

1 1 (입력)
1 1 (결과)
    
2 2 (입력)
2 2 (결과)

 

 

6. map 사용 + list 만들기

list(map(int, sys.stdin.readline().split()))

 

 

7. list + tuple로 만들기

li = []

for line in sys.stdin :
    li.append(tuple(map(int, line.strip().split())))

입력 / 결과

(입력)
1 1
2 2
3 3
4 4


(결과)
[(1, 1), (2, 2), (3, 3), (4, 4)]

 

 

8. 부분만 출력하기

num = sys.stdin.readline(2) --> (입력) 1234
print(num) --> (결과) 12