*divmod() -> 목과 나머지를 구해준다. 작은 숫자를 다룰 때는 a//b, a%b 보다 느리지만, 큰 수를 다룰 때는 divmod가 더 빠르다.
int(value, radix) -> int함수의 인자로 문자열 value, 와 radix를 넣으면 radix진수의 value값을 10진수로 바꾸어준다.
import string
print(string.ascii_lowercase)
print(string.ascii_uppercase)
print(string.digits)
실행결과 :
abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789
python에서는
파이썬의 zip과 unpacking 을 이용하면 코드 한 줄로 리스트를 뒤집을 수 있습니다.
mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_list = list(map(list, zip(*mylist)))
mylist = [1, 2, 3]
new_list = [40, 50, 60]
for i in zip(mylist, new_list):
print (i)
(1, 40)
(2, 50)
(3, 60)
list1 = [1, 2, 3, 4]
list2 = [100, 120, 30, 300]
list3 = [392, 2, 33, 1]
answer = []
for i, j, k in zip(list1, list2, list3):
print(i + j + k)
animals = ['cat', 'dog', 'lion']
sounds = ['meow', 'woof', 'roar']
answer = dict(zip(animals, sounds)) # {'cat': 'meow', 'dog': 'woof', 'lion': 'roar'}
abs는 파이썬의 절댓값 함수이다.
a = -2
print(abs(a))
2
단, 마지막에 있는 원소는 (마지막+1)번째의 원소와의 차를 구할 수 없으니, 이 값은 구하지 않습니다.
내 풀이 :
def solution(mylist):
answer = []
for i in range(len(mylist) - 1):
if mylist[i] > mylist[i+1]:
answer.append(mylist[i] - mylist[i+1])
else:
answer.append(mylist[i+1] - mylist[i])
return answer
zip을 이용한 풀이:
def solution(mylist):
answer = []
for i, j in zip(mylist, mylist[1:]):
answer.append(abs(i - j))
return answer
zip을 이용하면 index에 접근하지 않고 각 원소에 접근할 수 있다.
파이썬에서는 map을 이용하면 for 문을 사용하지 않고도 타입을 일괄 변환할 수 있다.
join을 사용하면 시퀀스의 멤버들을 string으로 이어붙일수 있다.
my_list = ['1', '100', '33']
answer = ''.join(my_list)
'110033'
파이썬에서는 itertools.product를 이용하면, for 문을 사용하지 않고도 곱집합을 구할 수 있다.
import itertools
iterable1 = 'ABCD'
iterable2 = 'xy'
iterable3 = '1234'
print(list(itertools.product(iterable1, iterable2, iterable3)))
[('A', 'x', '1'), ('A', 'x', '2'), ('A', 'x', '3'), ('A', 'x', '4'), ('A', 'y', '1'), ('A', 'y', '2'), ('A', 'y', '3'), ('A', 'y', '4'), ('B', 'x', '1'), ('B', 'x', '2'), ('B', 'x', '3'), ('B', 'x', '4'), ('B', 'y', '1'), ('B', 'y', '2'), ('B', 'y', '3'), ('B', 'y', '4'), ('C', 'x', '1'), ('C', 'x', '2'), ('C', 'x', '3'), ('C', 'x', '4'), ('C', 'y', '1'), ('C', 'y', '2'), ('C', 'y', '3'), ('C', 'y', '4'), ('D', 'x', '1'), ('D', 'x', '2'), ('D', 'x', '3'), ('D', 'x', '4'), ('D', 'y', '1'), ('D', 'y', '2'), ('D', 'y', '3'), ('D', 'y', '4')]
my_list = [[1, 2], [3, 4], [5, 6]]
answer = sum(my_list, [])
import itertools
list(itertools.chain.from_iterable(my_list))
import itertools
list(itertools.chain(*my_list))
[element for array in my_list for element in array]
from functools import reduce
list(reduce(lambda x, y: x+y, my_list))
from functools import reduce
import operator
list(reduce(operator.add, my_list))
flatten은 각 원소의 길이가 다른 경우에는 사용 불가
ex) [['A', 'B'], ['X', 'Y'], ['1’]]
순열과 조합을 itertools의 permutations와 combinations로 구할 수 있다.
from itertools import permutations
def solution(mylist):
print(sorted(list(permutations(mylist))))
print(sorted(list(combinations(mylist, len(mylist)))))
[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
[(1, 2, 3)]
collectionse.Counter
어떤 원소가 몇 번 등장하는지 세야할 때 Counter를 쓴다.
제곱근
내 풀이 :
def solution(mylist):
answer = []
for i in mylist:
if i % 2 == 0:
answer.append(i * i)
return answer
List comprehension을 이용한 풀이:
def solution(mylist):
answer = [i**2 for i in mylist if i%2 == 0]
return answer
실행결과 : [4, 36]
보통 프로그래밍 언어에서 'else'라고 하면 if와 함께 오는 경우가 거의 대부분입니다.
하지만 파이썬에서는 for 문과도 함께 쓰기도 합니다.
for와 함께 쓰는 else는, for문이 중간에 break 등으로 끊기지 않고,
끝까지 수행 되었을 때 수행하는 코드를 담고 있습니다.
코딩을 하다 보면 for문이 중간에 break 되었는지, 되어있지 않는지 판별해야 되는 경우가 많이 있습니다.
테스트 변수를 둬서 확인하는 등으로 처리합니다
파이썬에서는 else의 사용으로 간단하게 해결할 수 있습니다.
if문에 else를 사용하듯이 else를 사용하게 됩니다.
else의 들여쓰기는 for와 일치해야 합니다.