A.I
파이썬 문법 본문
파이썬 문법¶
In [3]:
import time
start = time.time() # 시작 시간 저장
a = 1
for i in range(100):
a += 1
# 작업 코드
print("time :", time.time() - start) # 결과는 '초' 단위 입니다.
time : 0.0005440711975097656
for문¶
In [4]:
my_list = ['a','b','c','d']
for i in my_list:
print("값 : ", i)
값 : a 값 : b 값 : c 값 : d
In [5]:
# 리스트, 문자열, 튜플 등이 있는 경우 순서와 리스트의 값을 함께 반환
my_list = ['a','b','c','d']
for i, value in enumerate(my_list):
print("순번 : ", i, " , 값 : ", value)
순번 : 0 , 값 : a 순번 : 1 , 값 : b 순번 : 2 , 값 : c 순번 : 3 , 값 : d
In [6]:
my_list = ['a','b','c','d']
result_list = []
# range([start,] stop [,step]) : range(2)와 같이 정수가 들어가야 하며 2이면 0부터 시작해서 2개인 list를 만듭니다.
# range(1, 10, 2) 이라면 1부터 10까지 2씩 증가하는 리스트를 만듭니다.
for i in range(2):
for j in my_list:
result_list.append((i, j))
print(result_list)
[(0, 'a'), (0, 'b'), (0, 'c'), (0, 'd'), (1, 'a'), (1, 'b'), (1, 'c'), (1, 'd')]
리스트 컴프리헨션(list Comprehension)¶
In [7]:
my_list = ['a','b','c','d']
result_list = [(i, j) for i in range(2) for j in my_list]
print(result_list)
[(0, 'a'), (0, 'b'), (0, 'c'), (0, 'd'), (1, 'a'), (1, 'b'), (1, 'c'), (1, 'd')]
제너레이터(Generator) - 데이터가 로드되는 시점을 나눠주기 위함¶
In [8]:
my_list = ['a','b','c','d']
# 인자로 받은 리스트를 가공해서 만든 데이터셋 리스트를 리턴하는 함수
def get_dataset_list(my_list):
result_list = []
for i in range(2):
for j in my_list:
result_list.append((i, j))
print('>> {} data loaded..'.format(len(result_list)))
return result_list
for X, y in get_dataset_list(my_list):
print(X, y)
>> 8 data loaded.. 0 a 0 b 0 c 0 d 1 a 1 b 1 c 1 d
In [9]:
my_list = ['a','b','c','d']
# 인자로 받은 리스트로부터 데이터를 하나씩 가져오는 제너레이터를 리턴하는 함수
def get_dataset_generator(my_list):
result_list = []
for i in range(2):
for j in my_list:
yield (i, j)
print('>> 1 data loaded..')
dataset_generator = get_dataset_generator(my_list)
for X, y in dataset_generator:
print(X, y)
0 a >> 1 data loaded.. 0 b >> 1 data loaded.. 0 c >> 1 data loaded.. 0 d >> 1 data loaded.. 1 a >> 1 data loaded.. 1 b >> 1 data loaded.. 1 c >> 1 data loaded.. 1 d >> 1 data loaded..
Try - Except 예외 처리¶
In [10]:
a = 10
b = 0
try:
#실행 코드
print(a/b)
except:
print('에러가 발생했습니다.')
#에러가 발생했을 때 처리하는 코드
b = b+1
print("값 수정 : ", a/b)
에러가 발생했습니다. 값 수정 : 10.0
Multiprocessing(멀티프로세싱)¶
In [11]:
import time
num_list = ['p1','p2', 'p3', 'p4']
start = time.time()
def count(name):
for i in range(0, 100000000):
a=1+2
print("finish : ",name)
for num in num_list:
count(num)
print("time :", time.time() - start)
finish : p1 finish : p2 finish : p3 finish : p4 time : 7.0942161083221436
In [12]:
import multiprocessing
import time
num_list = ['p1','p2', 'p3', 'p4']
start = time.time()
def count(name):
for i in range(0, 100000000):
a=1+2
print("finish : ",name)
if __name__ == '__main__':
# pool = multiprocessing.Pool(processes = 4) : 병렬 처리 시, 4개의 프로세스를 사용
pool = multiprocessing.Pool(processes = 4)
# pool.map(count, num_list) : 병렬화를 시키는 함수로써 count 함수에 num_list의 원소들을 하나씩 넣고
# 여기서 num_list의 원소는 4개이므로 4개의 count 함수에 각각 하나씩 원소가 들어가게 됩니다.
# count('p1'), count('p2'), count('p3'), count('p4')가 만들어집니다.
pool.map(count, num_list)
# pool.close() : 일반적으로 병렬화 부분이 끝나면 나옵니다. 더이상 pool을 통해서 새로운 작업을 추가하지 않을 때 사용합니다.
pool.close()
# pool.join() : 프로세스가 종료될 때까지 대기하도록 지시하는 구문으로써 병렬처리 작업이 끝날 때까지 기다리도록 합니다.
pool.join()
print("time :", time.time() - start)
finish : p3 finish : p1 finish : p2 finish : p4 time : 2.0250532627105713
함수¶
In [14]:
list_data = [10, 20, 30, 40]
list_data2 = [20, 30, 40, 50]
length = len(list_data)
max_result = list_data[0]
for i in range(length):
if max_result < list_data[i]:
max_result = list_data[i]
print("최댓값은 ", max_result)
length = len(list_data2)
max_result = list_data2[0]
for i in range(length):
if max_result < list_data2[i]:
max_result = list_data2[i]
print("최댓값은 ", max_result)
최댓값은 40 최댓값은 50
In [15]:
list_data = [10, 20, 30, 40]
list_data2 = [20, 30, 40, 50]
def max_function(x):
length = len(x)
max_result = x[0]
for i in range(length):
if max_result < x[i]:
max_result = x[i]
return max_result
print("최댓값은 ", max_function(list_data))
print("최댓값은 ", max_function(list_data2))
최댓값은 40 최댓값은 50
In [16]:
# 흐름 제어
def empty_function():
pass
In [17]:
# function을 써서 함수에 함수를 인자로 사용
def say_something(txt):
return txt
def send(function, count):
for i in range(count):
print(function)
send(say_something("안녕!"), 2)
안녕! 안녕!
In [18]:
list_data = [30, 20, 30, 40]
def minmax_function(x_list):
def inner_min_function(x):
length = len(x)
min_result = x[0]
for i in range(length):
if min_result > x[i]:
min_result = x[i]
return min_result
def inner_max_function(x):
length = len(x)
max_result = x[0]
for i in range(length):
if max_result < x[i]:
max_result = x[i]
return max_result
x_min = inner_min_function(x_list)
x_max = inner_max_function(x_list)
minmax_list = [x_min, x_max]
return minmax_list
print("최솟값, 최댓값은 : ", minmax_function(list_data))
print("최솟값은 : ", minmax_function(list_data)[0])
print("최댓값은 : ", minmax_function(list_data)[1])
최솟값, 최댓값은 : [20, 40] 최솟값은 : 20 최댓값은 : 40
In [19]:
# 여러 변수를 리턴받아 쓰기
list_data = [30, 20, 30, 40]
def minmax_function(x_list):
def inner_min_function(x):
length = len(x)
min_result = x[0]
for i in range(length):
if min_result > x[i]:
min_result = x[i]
return min_result
def inner_max_function(x):
length = len(x)
max_result = x[0]
for i in range(length):
if max_result < x[i]:
max_result = x[i]
return max_result
x_min = inner_min_function(x_list)
x_max = inner_max_function(x_list)
return x_min, x_max
min_value, max_value = minmax_function(list_data)
print("최솟값은 : ", min_value)
print("최댓값은 : ", max_value)
최솟값은 : 20 최댓값은 : 40
In [21]:
def add(x, y):
return x + y
In [20]:
print( (lambda x,y: x + y)(10, 20) )
30
In [22]:
def list_mul(x):
return x * 2
# map(함수,리스트)
result = list(map(list_mul, [1, 2, 3]))
print(result)
#map_res = map(list_mul, [1, 2, 3])
#print(map_res)
#list_map_res = list(map_res)
#print(list_map_res)
[2, 4, 6]
In [23]:
result = list(map(lambda i: i * 2 , [1, 2, 3]))
print(result)
[2, 4, 6]
파이썬 pep8¶
'파이썬 & AI 학습' 카테고리의 다른 글
선형회귀와 로지스틱회귀 (0) | 2021.02.06 |
---|---|
데이터 전처리 (0) | 2021.02.03 |
비지도 학습( Unsupervised Learning ) (0) | 2021.01.29 |
포켓몬 찾기 (0) | 2021.01.27 |
주사위 만들기 (0) | 2021.01.25 |