list1 = [i for i in range(20) if i % 2 == 1]
print(list1) # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
list2 = [i * i for i in range(10)]
print(list2) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
N x M 2차원 리스트 초기화
n = 4
m = 2
array = [[0] * m for _ in range(n)]
print(array)
append(), sort(), reverse(), insert(), count(), remove() ...
a = set([1, 2, 3, 4, 5])
b = {3, 4, 5, 6, 7}
print(a | b) # 합집합
print(a & b) # 교집합
print(a - b) # 차집합
data = set([1, 2, 3])
# data = {1, 2, 3} # 또 다른 초기화 방식
data.add(4)
print(data) # {1, 2, 3, 4}
# 새로운 원소 여러 개 추가
data.update([5, 6])
print(data) # {1, 2, 3, 4, 5, 6}
data.remove(3)
print(data) # {1, 2, 4, 5, 6}
사용자로부터 입력을 빠르게 받아야 하는 경우, sys 라이브러리의 sys.stdin.readline() 메서드를 이용할 수 있다. 단, 입력 후 엔터도 줄 바꿈 기호로 입력되므로 rstrip() 메서드도 함께 사용해야 한다.
import sys
data = sys.stdin.readline().rstrip()
print(data)
파라미터의 변수를 직접 지정 가능하다.
def add(a, b):
result = a + b
print('더한 결과: ', result)
add(b = 7, a = 3)
함수는 여러 개의 반환 값을 가질 수 있으며, 이때 return type은 tuple 이다.
def operator(a, b):
add = a + b
subtract = a - b
multiply = a * b
divide = a / b
return add, subtract, multiply, divide # 'packing'
a, b, c, d = operator(6, 3) # 'unpacking'
print(a, b, c, d) # 9 3 18 2.0
print(type(operator(6, 3))) #<class 'tuple'>
함수를 간단하게 작성할 수 있다.
예시 1 : 기본
def mul(a, b):
return a * b
print(mul(5, 4)) # 20
print((lambda x, y: x * y)(5, 4)) # 20
print(list(map(lambda x, y: x * y, [1, 2, 3], [4, 5, 6]))) # [4, 10, 18]
예시 2 : 람다 함수 이용하여 정렬
scores = [('A', 75), ('B', 100), ('C', 80)]
def my_key(x):
return x[1]
# key에 정렬 기준 명시
print(sorted(scores, key = my_key)) # [('A', 75), ('C', 80), ('B', 100)]
print(sorted(scores, key = lambda x: x[1])) # 위와 동일
예시 3 : 여러 개의 리스트에 적용
list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = map(lambda x, y: x * y, list1, list2)
print(list(result)) # [4, 10, 18]
순열(permutations)
from itertools import permutations
data = ['A', 'B', 'C']
result = list(permutations(data, 3)) # 3개를 뽑아 나열
print(result) # [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
조합(combinations)
from itertools import combinations
data = ['A', 'B', 'C']
result = list(combinations(data, 2)) # 순서 상관없이 2개 뽑기
print(result) # [('A', 'B'), ('A', 'C'), ('B', 'C')]
중복 순열(product)
from itertools import product
data = ['A', 'B', 'C']
result = list(product(data, repeat = 2)) # 중복을 허용하여 2개를 뽑아 나열
print(result) # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
중복 조합(combinations_with_replacement)
from itertools import combinations_with_replacement
data = ['A', 'B', 'C']
result = list(combinations_with_replacement(data, 2)) # 중복을 허용하여 순서 상관없이 2개 뽑기
print(result) # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
카운터(Counter)
from collections import Counter
mycounter = Counter(['yellow', 'yellow', 'green', 'green', 'yellow', 'blue'])
print(mycounter['yellow'])
print(mycounter['green'])
print(dict(mycounter))
최대공약수(GCD)
import math
# 최소공배수(LCM)는 따로 함수 만들어줘야 함
def lcm(a, b):
return a * b // math.gcd(a, b)
print(math.gcd(21, 14)) # 최대공약수(GCD) # 7
print(lcm(21, 14)) # 42
[참고]