#### split ####
items = "one two three".split() #기준값이 없으면 스페이스바(" ") 기준
print(items)
>> ['one','two','three']
a,b,c = ""one two three".split() #언패킹
items = "one,two,three".split(",") #"," 기준
print(items)
>> ['one','two','three']
#### join #####
tmp = "-".join(items)
print(tmp)
>> 'one-two-three
#일반적인 for loop
result = []
for i in range(5):
result.append(5)
result
>> [0,1,2,3,4]
# list comprehension
result = [i for i in range(5)]
result
>> [0,1,2,3,4]
## if 구문이 추가
result = [i for i in range(5) if i % 2 == 0]
result
>> [0,2,4]
## if else 구문 추가
result = [i if i % 2 == 0 else "kkk" for i in range(5)]
result
>> [0,'kkk',2,'kkk',4]
## 이중 for문
result [(i,j) for i in range(3) for j in range(3)]
result
[(0,0),0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
# for i in range(3)
# for j in range(3)
# enumerate
t = ['a','b','c']
tmp = []
for i,v in enumerate(tmp):
tmp.append((i,v))
print(tmp)
>> [(0,'a'),(1,'b'),(2,'c')]
## 상기 코드를 list로도 구현할 수 있음
t = ['a','b','c']
tmp = list(enumerate(t))
print(tmp)
>> [(0,'a'),(1,'b'),(2,'c')]
# zip
a = ['x1','x2','x3']
b = ['y1','y2','y3']
tmp = []
for a,b in zip(a,b):
tmp.append((a,b))
print(tmp)
>> [('x1','y1'),('x2','y2'),('x3','y3')]
# 상기 코드 list로 구현
tmp = list(zip(a,b))
print(tmp)
>> [('x1','y1'),('x2','y2'),('x3','y3')]
lambda
def f(x): # general function
return x + 5
f = lambda x : x + 5 # lambda function
map
tmp = [1,2,3,4,5]
f = lambda x : x + y
tmp2 = list(map(f,tmp,tmp))
tmp2
>> [2,4,6,8,10]
tmp2 = list(map(lambda x : x**2 if x%2 == 0 else x, tmp)
>> [1,4,3,16,5]
reduce
from functools import reduce
reduce(lambda x,y : x+y,[1,2,3,4,5])
>> 15
#
tmp = [1,2,3]
tmp_iter = iter(tmp)
next(tmp_iter) => 1
next(tmp_iter) => 2
next(tmp_iter) => 3
def generator_list():
for i in range(10):
yield i
for i in generator_list():
print(i)
gen_ex = (n for n in range(50))
type(gen_ex) => <class ' generator'>
곱셈(*), 제곱연산(**), 가변 인자, 언패킹
가변인자(variable-length argument)
def asterisk_test(a,b,*args):
return a + b + sum(args)
asterisk_test(1,2,3,4,5) => 15
#a = 1, b = 2, *args에는 3,4,5가 입력됨
키워드 가변인자 (keyword variable-length argument)
parameter 이름을따로 지정하지 않고 입력하는 방법
asterisk(*) 두 개를 사용
입력된 값은 dict type으로 저장
가변인자는 오직 한 개만 기존 가변 인자 다음에 사용
def tmp(a,b,**kwargs):
print(a,b,kwargs)
tmp(1,2, first = 10) => 1 2 {'first' : 10}
unpacking a container
li = [1,2,3,4,5]
print(li, *li) => [1,2,3,4,5] 1 2 3 4 5
list(zip(*[[1,2,3],[2,4,6]]) => [[1,2],[2,4],[3,6]]