파이썬 문법 시리즈
어썸한 문법 제보 받습니다.
1. 입력
1-1. 여러 정수가 들어올 때 입력 받기
a, b = map(int, input().split())
Python
복사
1-2. 여러 정수를 리스트로 받기
lst = [*map(int, input().split())] # [1, 2, 3]
lst = list(map(int, input().split()))
lst = [int(x) for x in input().split()]
Python
복사
1-3. 문자를 리스트로 받기
lst = input().split() # ['a', 'b', 'c']
Python
복사
1-4. 입력값 따로 받기
first, *mid, last = map(input().split()) # input: 1 2 3 4 5
# first: 1
# mid: [2, 3, 4]
# last: 5
Python
복사
1-5. 입력 시간 줄이기
import sys
input = sys.stdin.readline
Python
복사
2. 출력
2-1. end: 출력 끝에 문자 추가
lst = [1, 2, 3, 4, 5]
for n in lst:
print(n, end=' ')
# output: 1 2 3 4 5
Python
복사
2-2. sep: 객체 사이에 문자 추가
lst = [1, 2, 3, 4, 5]
print(*lst, sep=',') # output: 1,2,3,4,5
Python
복사
2-3. join: 문자열 출력
lst = ['a', 'b', 'c']
print(''.join(lst)) # output: abc
Python
복사
2-4. 리스트 출력
lst = [1, 2, 3, 4]
print(*lst) # 1 2 3 4
Python
복사
3. enumerate
•
리스트에서 인덱스와 값을 함께 가져올 때 사용
lst = ['a', 'b', 'c']
for idx, c in enumerate(lst):
print(idx, c)
# output
# 0 a
# 1 b
# 2 c
Python
복사
lst = list(enumerate(['a', 'b', 'c']))
# [(0, 'a'), (1, 'b'), (2, 'c')]
Python
복사
4. set
4-1. 선언
# 빈 set
s = {}
s = set()
# 선언 및 초기화
s = {1, 2, 3, 4, 5, 6}
# 리스트 변환
lst = [1, 1, 2, 3, 3]
s = set(lst) # {1, 2, 3}
Python
복사
4-2. 집합연산
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
intersection = A & B # {3, 4}
union = A | B # {1, 2, 3, 4, 5, 6}
difference = A - B # {1, 2}
Python
복사
5. dictionary
5-1. 선언
key_lst = ['a', 'b', 'c']
val_lst = [10, 20, 30]
# 반복문으로 생성
dic = {}
for key, val in key_lst, val_lst:
dic[key] = val
# {'a': 10, 'b': 20, 'c': 30}
# zip으로 생성
dic = dict(zip(key_lst, val_lst)) # {'a': 10, 'b': 20, 'c': 30}
# dictionary comprehension
dic = {x:y for x, y in zip(key_lst, val_lst)} # {'a': 10, 'b': 20, 'c': 30}
Python
복사
5-2. defaultdict
•
기본 dictionary는 없는 key를 조회 시도 시 오류 발생
•
defaultdict는 없는 key를 조회할 때 빈 값을 채워줌
# 기본 dictionary
dic = dict(zip(key, val)) # {'a': 10, 'b': 20, 'c': 30}
print(dic['kk']) # error!
# defaultdict - int
from collections import defaultdict
dic = defaultdict(int)
print(dic['kk']) # 0
# defaultdict - list
from collections import defaultdict
dic = defaultdict(list)
dic['a'].append(42)
print(dic['a']) # [42]
Python
복사
6. Counter
•
기본 dictionary 메소드를 상속받기 때문에 keys(), values() 등 사용 가능
6-1. 초기화
from collections import Counter
counter = Counter("abracadabra")
print(counter)
# Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})
Python
복사
6-2. elements()
•
객체의 요소를 정렬되지 않은 형태로 반환
•
개수가 0 이하인 요소는 제외됨
c2 = Counter(a=3, b=2, c=-1)
print(list(c2.elements()))
# ['a', 'a', 'a', 'b', 'b']
Python
복사
6-3. most_common(n)
•
가장 흔한 요소 n개를 반환
•
n을 생략하거나 None으로 전달하면 모든 요소를 반환
•
개수가 동일할 경우, 순서는 임의로 지정됨
counter = Counter("abracadabra")
print(c1.most_common(2))
# [('a', 5), ('b', 2)]
Python
복사
6-4. subtract()
•
입력된 요소의 개수를 뺌, 해당 요소가 0개 이하일 경우 유지됨
c3 = Counter(a=3, b=2, c=1)
c3.subtract({'a': 1, 'c': 2})
print(c3)
# Counter({'a': 2, 'b': 2, 'c': -1})
Python
복사
6-5. update()
•
입력된 요소의 개수를 더함
c3.update({'a': 1, 'c': 2})
print(c3)
# Counter({'a': 3, 'b': 2, 'c': 1})
Python
복사
7. 기타
7-1. 변수 swap
a, b = 4, 2
a, b = b, a
print(a, b) # 2 4
Python
복사