코딩테스트를 준비하면서 헷갈리거나 계속해서 구글링하게 되는 기본 문법들을 정리했다.
for i, letter in enumerate(['A', 'B', 'C'], start=1):
print(i, letter)
1 A
2 B
3 C
>>> bin(0b1101 & 0b1001) # 비트 AND
'0b1001'
>>> 13 & 9 # 비트 AND
9
>>> bin(0b1101 | 0b1001) # 비트 OR
'0b1101'
>>> 13 | 9 # 비트 OR
13
>>> bin(0b1101 ^ 0b1001) # 비트 XOR
'0b100'
>>> 13 ^ 9 # 비트 XOR
4
>>> bin(~0b1101) # 비트 NOT
'-0b1110'
>>> ~13 # 비트 NOT
-14
>>> all([1,2])
True
>>> all([1,0])
False
>>> all([0,0])
False
>>> all('abc')
True
>>> any([1,2])
True
>>> any([1,0])
True
>>> any([0,0])
False
>>> any('abc')
True
text = "dog.jpeg"
text.strip(".jpeg")
# text => "do"
while '..' in answer:
answer = answer.replace('..', '.')
s = "adfe"
s.sort() # wrong
s2 = sorted(s) # ['a','d','e','f']
s3 = ''.join(sorted(s)) # "adef"
listA = ['사과', '딸기', '오렌지', '바나나']
listB = ['귤', '감', '포도', '사과', '바나나']
listE = [x for x in listA if x not in listB]
['딸기', '오렌지']
예시
a = [
[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9],
]
b = [i[0] for i in a]
# b = [0, 2, 4, 6, 8]
d1 = {'one' : 3, 'two' : 2, 'three' : 3}#선언
d1['one'] = 1 #값 수정
d1['four'] = 4 #값 추가
print(d1)
# {'one' : 1, 'two" : 2, 'three' : 3, 'four' : 4}
print(d1['two']) => 2출력
print(d1.get('two')) => 2출력
items와 list 활용
[key for key, value in d1.items() if value == 3]
=> ['three']
반복적으로 찾아야 할 경우에는 key와 value를 바꾼 딕셔너리를 하나 더 생성한다.
d2 = {value : key for key, value in d1.items()}
#방법 1
d1.pop('two')
#방법 2
del(d1['two'])
d1 = {1:10, 2:20}
d2 = {1:100, 3:300}
dic1.update(dic2)
print(dic1)
# {1: 100, 2: 20, 3: 300}
dic → list
# key 값을 기준으로 오름차순 정렬하여 리스트 출력
print(sorted(dic))
# key 값을 기준으로 내림차순 정렬한 리스트 출력
print(sorted(dic, reverse=True))
dic → dic
# key 값을 기준으로 정렬된 (key,value) 원소쌍을 가진 리스트 출력
print(sorted(dic.items()))
# key 값을 기준을 정렬된 딕셔너리 생성
dic = dict(sorted(dic.items()))
print(dic)
# value 값을 기준으로 오름차순 정렬하여 (k, v) 리스트 반환
print(sorted(dic.items(), key=lambda x:x[1]))
# 위 값을 딕셔너리로 변환
print(dict(sorted(dic.items(), key=lambda x:x[1])))
# value 값을 기준으로 오름차순 정렬
print(sorted(dic,key=lambda x:dic[x]))
최대공약수(GCD) : n과 m의 최대 공약수는 m과 n%m 의 최대공약수와 같다.
n%m 이 0이 될 때 까지 재귀로 구한다.
def gcd(n, m):
if n % m == 0:
return m
else:
return gcd(m, n % m)
최소공배수(LCM) : 최대공약수를 구한 후 n과 m을 같이 곱해준다.
순열
import itertools
arr = ['A', 'B', 'C']
nPr = itertools.permutations(arr, 2)
print(list(nPr))
결과 : [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
조합
import itertools
arr = ['A', 'B', 'C']
nCr = itertools.combinations(arr, 2)
print(list(nCr))
결과 : [('A', 'B'), ('A', 'C'), ('B', 'C')]
계속해서 추가할 예정이며 추후에 보기좋게 정리할 예정이다.