티스토리 뷰
복습¶
In [1]:
l=['Kim','Lee','Park']
In [2]:
for i in l:
print(i)
for 의 range() 함수를 사용하여 0~9 까지 출력
In [6]:
for i in range(10):
print(i)
짝수 100개로 된 리스트 만들기(리스트 내포)
In [19]:
l=[i*2 for i in range(10)]
l
Out[19]:
[[0,1,2,...,9],[10,11,12,...,19],[20,21,22,...29]]인 리스트 만들기
In [98]:
nums=[]
for i in range(3):
I=[]
for j in range(10):
#print(10*i+j)
I.append(i*10+j)
nums.append(I)
nums
Out[98]:
함수¶
In [32]:
def add(a,b):
return a+b
In [33]:
add(10,2)
Out[33]:
In [53]:
def mysum(a,b,c):
return a+b+c
In [54]:
n = mysum(11,12,13)
print(n)
In [55]:
s=mysum('aaa','bbb','ccc')
print(s)
In [59]:
k=mysum([1,2,3],[4],[7,8]) #리스트 원소의 개수가 같지 않아도 돼
print(k)
In [60]:
k=mysum([1,2,3],4,[7,8]) #리스트와 숫자의 합은 에러
print(k)
In [69]:
def mysum(a,b,c=0):
return a+b+c
n = mysum(1,2)
print(n)
되도록이면 함수를 사용하지 마
너무 긴 소스가 있는데 그 소스를 자주 반복해야 하는 경우에 사용.
(소스 코드 수정이 빈번할 때 사용.)
다른 인자로 함수를 넘길 때(한줄짜리 함수, 람다함수)
In [72]:
l=[3,2,1,4,5]
In [73]:
sorted(l)
Out[73]:
In [75]:
sorted(l, key=lambda n: -n)
Out[75]:
In [79]:
def mys(n):
return -n
In [80]:
sorted(l, key=mys)
Out[80]:
In [81]:
def add_and_mul(a,b):
return a+b, a*b # 함수의 결과값은 항상 하나이다. 콤마로 연결된 것은 튜플
In [82]:
add_and_mul(2,7)
Out[82]:
In [83]:
def myf(a,b):
r1=a+b-1
r2=a*b-a-b
return r1, r2
In [84]:
r=myf(1,2)
In [85]:
print(r)
In [86]:
print(r[0],r[1])
In [87]:
print(type(r), len(r))
지역변수와 외부변수¶
In [99]:
n=99
In [100]:
def f1(x):
return n+x # 함수 안에서 외부의 변수를 읽을 수 있다.
In [101]:
f1(1)
Out[101]:
In [109]:
def f2(x):
n=0 # 함수 안에서 외부변수와 같은 이름의 변수를 만들면 지역변수가 된다. 그러나 같은 이름의 지역변수를 만들지 말자
return n+x
f2(1)
Out[109]:
In [103]:
n
Out[103]:
In [107]:
def f3(x):
global n # global로 지정하면 외부 변수의 값을 변경할 수 있다. 잘 사용 x
n+=1
return n+x
In [105]:
f3(1)
Out[105]:
In [106]:
n
Out[106]:
lambda 함수¶
람다함수는 임시로 또는 간단하게 함수를 만들때 사용한다.
lambda[인수들]: 리턴값
함수의 인자로 함수를 넘길 수 있다.
In [112]:
f = lambda a,b,c: a+b+c
f(1,2,3)
Out[112]:
In [115]:
s = input('입력하세요-> ')
In [116]:
s
Out[116]:
파일 읽고 쓰기¶
In [117]:
f=open("새파일.txt",'w') #현재 디렉토리에 새파일.txt가 생성된다.
f.close()
In [119]:
f = open("새파일1.txt",'w') # 이미 있으면 덮어쓰기
f.write('나는 사람이다\n') # write라는 함수가 행을 바꿔주지 않으므로 \n을 넣어줬다.
f.write('1\n2\n3')
f.close()
In [126]:
f=open("새파일1.txt") # 디폴트가 읽는것이다. 'r'을 해줘도 된다.
line = f.readline() # 가장 많이 사용
f.close()
print(line)
In [125]:
f=open("새파일1.txt")
line = f.readline()
line2 = f.readline()
f.close()
print(line, line2) # ,는 뛰어쓰기가 된다.
In [127]:
f=open("새파일1.txt")
line = f.readlines() # 모든 줄을 다 읽으며 리스트 형태로 나온다. 응용
f.close()
print(line)
In [128]:
f=open("새파일1.txt")
line = f.read() # 모든 줄을 다 읽으며 ' '형태로 나온다. 응용
f.close()
print(line)
In [131]:
f=open("새파일1.txt")
for line in f:
print(line)
In [132]:
f=open("iris.csv") # csv는 ,로 구분된 파일이다.
for line in f:
print(line)
In [135]:
# writedata.py
f = open("iris.csv", 'w') # iris.csv 파일의 내용을 모두 바꿔버림....
for i in range(1, 11):
data = "%d번째 줄입니다.\n" % i
f.write(data)
f.close()
In [138]:
f = open("iris.csv")
for line in f:
print('<%s>' % line) # 개행문자가 있는지 확인
f.close
Out[138]:
In [211]:
f = open("iris.csv")
line = f.readline()
l=line.strip().split(',')
f.close()
In [212]:
l
Out[212]:
In [215]:
f = open("iris.csv")
f.readline()
line2 = f.readline()
l2 = line2.strip().split(',')
In [216]:
l2
Out[216]:
In [220]:
f = open("iris.csv")
f.readline() # 한 줄 삭제
data = []
for line in f:
l = line.strip().split(',')
data.append(l)
f.close()
print(type(data), len(data))
print(data[0])
print(data[-1])
print(type(data[0]),len(data[0]))
In [219]:
f = open("iris.csv")
f.readline() # 한 줄 삭제
data = []
for line in f:
l = line.strip().split(',')
l[0] = float(l[0]) # 리스트 안의 문자를 실수화
l[1] = float(l[1])
l[2] = float(l[2])
l[3] = float(l[3])
data.append(l)
f.close()
print(type(data), len(data))
print(data[0])
print(data[-1])
print(type(data[0]),len(data[0]))
In [222]:
f = open("iris.csv")
f.readline() # 한 줄 삭제
data = []
for line in f:
l = line.strip().split(',')
l[:4] = [float(i) for i in l[:4]] # 리스트 안의 문자를 실수화
data.append(l)
f.close()
print(type(data), len(data))
print(data[0])
print(data[-1])
print(type(data[0]),len(data[0]))
In [224]:
f = open("iris.csv")
f.readline() # 한 줄 삭제
data = []
for line in f:
l = line.strip().split(',')
l[:4] = [float(i) for i in l[:4]]
if l[4] == 'Iris-setosa':
l[4] = 0
elif l[4] == 'Iris-versicolor':
l[4] = 1
else: l[4] = 2
data.append(l)
f.close()
print(type(data), len(data))
print(data[0])
print(data[-1])
print(type(data[0]),len(data[0]))
In [242]:
f = open("iris.csv")
targets={'Iris-setosa':0, 'Iris-versicolor':1,
'Iris-virginica':2} # 딕셔너리 정의
f.readline() # 한 줄 삭제
data = []
for line in f:
l = line.strip().split(',')
l[:4] = [float(i) for i in l[:4]]
l[4] = targets[l[4]]
data.append(l)
f.close()
print(type(data), len(data))
print(data[0])
print(data[-1])
print(type(data[0]),len(data[0]))
In [247]:
f = open("iris.csv")
data = []
labels = {'Iris-setosa':0, 'Iris-versicolor':1,
'Iris-virginica':2}
columns = f.readline().strip().split(',')[:4]
for line in f:
l = line.strip().split(',')
for i in range(4): l[i] = float(l[i])
l[4] = labels[l[4]]
data.append(l)
f.close()
print(data)
print('==================================================================')
print(columns)
print('==================================================================')
col1 = [i[0] for i in data]
col2 = [i[1] for i in data]
col3 = [i[2] for i in data]
col4 = [i[3] for i in data]
cols = [i[:4] for i in data]
targets = [i[4] for i in data]
In [248]:
col1
Out[248]:
In [250]:
cols
Out[250]:
In [251]:
targets
Out[251]:
In [252]:
len(col1)
Out[252]:
In [253]:
len(cols)
Out[253]:
In [254]:
len(targets)
Out[254]:
cols ==============> predict_value 1 =====> real value 2(x)
cols ==============> predict_value 2 =====> real value 2 가 되도록 학습 시킨다.
클래스¶
자세히 설명하지 않는다. 이유는
- 파이썬은 객체지향 언어이며, 클래스의 기능도 자바에 못지 않다.
- 하지만 파이썬을 쓰는 주요 목적은 빠른 시제품을 만들고 알고리즘을 테스트하는 것이다.
- 클래스를 사용하면 커다란 장점도 많지만, 클래스간의 의존성을 주의깊게 체크해야 하고 가독성을 떨어뜨릴 가능성이 크다.
- 일단 클래스에 대해서는 기본적인 기능만 익히고, 향후 여러 개발자와 협력해야 하거나 개발 마지막 단계에서 패키징 할 때 상세한 내용을 공부하는 것이 좋을 것이다.
클래스는 함수와 변수를 묶어주는 역할을 한다.
클래스 안의 함수는 첫번째 글자를 항상 self를 써야 한다.
함수끼리 불러서 사용할 수 있다.
클래스 안에 있는 함수끼리라도 부르기 위해서는 self.함수이름 해서 불러야 한다.
클래스 사용 방법은 c=클래스이름('인자1','인자2') 이렇게 써서 사용한다.
클래스 안의 함수는 print(c.함수이름())과 같이 써서 사용한다.
리스트도 클래스 유형 중 하나이다.
모듈¶
In [258]:
sum([1,2,3])
Out[258]:
In [261]:
sqrt(3)
# 잘 사용하지 않는 기능까지 모두 넣으려면 무겁기 때문에
#기본적으로 제곱근 함수는 제공하지 않는다.
#그러므로 모듈을 사용해야 한다.
In [264]:
import math # 수학공식이 들어가 있는 모듈을 호출한다. 이때부터 math라는 단어를 사용 가능
In [265]:
dir(math) # math 안에 들어있는 함수 출력
Out[265]:
In [268]:
math.sqrt(3)
Out[268]:
In [269]:
math.sin(math.pi/2)
Out[269]:
In [270]:
from math import sin, pi # math 라는 모듈에서 sin과 pi를 가져오겠다.
In [271]:
sin(pi/2)
Out[271]:
In [275]:
import math as m # 이름이 너무 길거나 마음에 안들면 별칭을 이용할 수 있다.
In [276]:
m.sin(m.pi/2)
Out[276]:
사용자 모듈¶
In [282]:
#mymodule.py # 복잡해지기 때문에 특별한 상황에서만 사용
def myf(a,b):
a+b
https://docs.python.org/3/library/functions.html 파이썬에서 정의된 기본 함수들
'beginner > 파이썬 기초' 카테고리의 다른 글
NumPy_잘라내기 (0) | 2019.02.11 |
---|---|
NumPy_기본 (0) | 2019.02.08 |
2019.1.31 (0) | 2019.01.31 |
2019.01.30 (0) | 2019.01.30 |
13. 기능을 확장하는 모듈 (0) | 2019.01.11 |