2 장 파이썬의 기초
2.1 기초
코멘트(주석)처리: R과 동일하게
### 1help 기능
## Help on built-in function print in module builtins: ## ## print(...) ## print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) ## ## Prints the values to a stream, or to sys.stdout by default. ## Optional keyword arguments: ## file: a file-like object (stream); defaults to the current sys.stdout. ## sep: string inserted between values, default a space. ## end: string appended after the last value, default a newline. ## flush: whether to forcibly flush the stream.화면 출력(
print()함수)## print ...변수 식별자의 명명법
- 항상 알파벳이나
_(밑줄)로 시작 - 두번째 이후는 알파벳,
_,0~9으로 구성 - 대/소문자 구분
## 1 파이썬 쌩초보입니다..- 항상 알파벳이나
들여쓰기
- 같은 레벨의 코드는 같은 열부터 작성
- 하위레벨의 코드는 공백 4개 들여쓰기
## 1## 1
2.2 기본 자료형
- 파이썬의 기본 자료형은
- 리터럴 상수
- 리스트 (list)
- 튜플 (tuple)
- 딕션너리 (dictionary)
- 집합 (set) 등으로 구성되어 있음
2.2.1 리터럴 상수
- 숫자형: 정수형(Integer)/부동소수점형(Float)
- 정수형: ex>2,3,4,5
- 소수점 숫자: ex>3.23, 52.3E-4
- 문자열
작은따옴표(
' '), 큰따옴표(" "), 따옴표 세 개 (''' ... ''')문자열 안에서 작은/큰 따옴표 사용 가능
x = 'this is ...' x = "this is a ..." x = '''This is a multi-line string. This is the 1st line. This is the 2nd line. ''' print(x)## This is a multi-line string. ## This is the 1st line. ## This is the 2nd line.문자열의 인덱싱/슬라이싱: 문자열의 부분을 접근하는 방법
- 아래의 대괄호 안에
:2는 문자열의 첫(0번째) 문자 부터 2번째 문자 직전까지를 나타냄, 즉, 0~1번째 문자 (‘나는’)
## '나는'- 위의 문자열에서 동국대학교를 추출하려면?
## '동국대학교'- 아래의 대괄호 안에
2.2.2 리스트 (list)
리스트의 생성 방법
리스트명 = [요소1, 요소2, ..., 요소n]- 리스트 생성
a = [] # 또는 a= list() b = [1, 2, 3] c = ['Life', 'is', 'too', 'short'] d = [1, 2, 'Life', 'is'] e = [1, 2, ['Life', 'is']] e## [1, 2, ['Life', 'is']]리스트의 특징
- 순서화된 요소(인덱스 이용)
- 추가/변경/삭제 가능
리스트 함수
요소의 개수 (len)
## 3요소 삽입 (insert): 전해진 위치에 삽입
## [1, 7, 4, 3, 2]추가(append): 맨뒤에 추가
## [1, 4, 3, 2, 4]리스트 정렬(sort): 역순 정렬은
reverse=True추가## [4, 3, 2, 1]## [4, 3, 2, 1]위치 반환(index): 주어진 값(요소)이 나타나는 리스트의 첫번째 위치
## [4, 3, 2, 1]## 0요소 추출 후 삭제(pop): 정해진 요소값(
3)을 추출하고 리스트에서는 삭제됨## [4, 3, 2, 1]## 1## [4, 3, 2]인덱싱과 슬라이싱
## 파이썬## 도구이다.## ['필수적인', '도구이다.']## ['파이썬', '프로그램은']## ['프로그램은', '빅데이터분석을', '위한', '필수적인', '도구이다.']## ['프로그램은', '빅데이터분석을']
2.2.3 튜플 (tuple)
튜플(tuple)과 리스트(list)의 차이점
- 리스트는
[ ], 튜플은( ) - 리스트는 요소값의 삭제, 수정이 가능, 튜플은 불가
- 리스트는
튜플의 생성
## ('python', 'elephant', 'penguin')튜플 관련 함수
## 3## ('python', 'elephant', 'penguin')
2.2.4 딕셔너리 (dictionary)
특징
- key 와 value 의 쌍을 갖는 자료형
{key_1: value_1, ..., key_n: value_n,}
- key는 반드시 유일해야함 (중복되면 마지막 키에 해당되는 것만 저장됨)
- key에는 리스트 사용불가, 즉 상수만 사용 가능
- key 와 value 의 쌍을 갖는 자료형
예제
email = {'김진석': 'jskim@dongguk.ac.kr', '김동국': 'dg@dongguk.ac.kr', '강감찬': 'kkc@dongguk.edu', '홍길동': 'gildong@gmail.com' } email## {'김진석': 'jskim@dongguk.ac.kr', '김동국': 'dg@dongguk.ac.kr', '강감찬': 'kkc@dongguk.edu', '홍길동': 'gildong@gmail.com'}
keys(),items()## jskim@dongguk.ac.kr## dict_items([('김진석', 'jskim@dongguk.ac.kr'), ('김동국', 'dg@dongguk.ac.kr'), ('강감찬', 'kkc@dongguk.edu'), ('홍길동', 'gildong@gmail.com')])## dict_keys(['김진석', '김동국', '강감찬', '홍길동'])for문에서## 김진석의 이메일은 jskim@dongguk.ac.kr입니다. ## 김동국의 이메일은 dg@dongguk.ac.kr입니다. ## 강감찬의 이메일은 kkc@dongguk.edu입니다. ## 홍길동의 이메일은 gildong@gmail.com입니다.
2.2.5 집합 (set)
정렬되지 않은 단순 객체의 묶음
객체의 순서나 중복에 상관
## True## False## True## {'brazil', 'india'}
2.3 연산자 (operator)
| Python | R | Description |
|---|---|---|
a + b |
a + b |
a와 b를 더하기 |
a - b |
a - b |
a에서 b를 빼기 |
a * b |
a * b |
a와 b를 곱하기 |
| `‘a’*3 | rep('a',b) |
문자/리스트/튜플은 반복 |
a / b |
a / b |
a를 b로 나눔 |
a % b |
a %% b |
a를 b로 나눈 나머지 |
a // b |
a %/% b |
a를 b로 나눔(정수나누기) |
a == b |
a == b |
논리연산(같음) |
a is b |
참조(reference)의 같음 | |
a != b |
a != b |
논리연산(다름) |
a is not b |
참조(reference)의 다름 | |
a > b |
a > b |
논리연산(큼) |
a ** b |
a ^ b |
\(a^b\) |
a & b |
비트 그리고(bitwise AND) | |
a | b |
비트 또는(bitwise OR) | |
a ^ b |
비트 또는(bitwise EXCLUSIVE-OR) |
[사칙연산]
+, -, *, /## (8, -2)## 6## '통계통계통계'## 4.333333333333333[거듭제곱 연산]
**## 81## [1] 81[나머지 연산]
%## 1## [1] 1[비트연산]
&, |, ^(and, or, xor)## 1x = 5|3 y = 5 or 3 # 5 = 0000 0101 <= 이진수 # 3 = 0000 0011 <= 이진수 # 5|3 = 0000 0111 <= 이진수 # 7 <= 십진수 x, y## (7, 5)## 6x= ~5 # 5의 1에 대한 보수 => -(x + 1) => -6 # 5 = 0000 0101 <= 이진수 #flip = 1111 1010 #shift =1 1111 010 0 # +1 =1 1111 0101 #flip =1 0000 1010 # ------------------------- # - 0000 1010 ==> -6 x## -6[논리연산]
<, >, <=, >=, ==, !=, not, and, or## False## True## False## False## Truea = [1,2,3] # b = [1,2,3] c = a # c has same reference of a print('a is b:', a is b) # 객체의 주소(references)를 비교## a is b: False## a == b: True## a is c: True## a == c True
2.4 제어문
- 파이썬 제어문에는 조건문과 순환문이 있다
2.4.1 조건문
if, elif, else구문의 기본형식
if 조건1:
수행문1
elif 조건2:
수행문2
else:
수행문3
- 삼항연산자를 이용하는 방법
x = [조건이 참일 때 결과] if 조건 else [거짓일때 결과]
예제 1
## good## [1] "good"예제 2
## good## [1] "good"
2.4.2 반복문/순환문/loop
while문while 조건은 조건이 참인 경우 반복 실행기본형식
while 조건: 수행문1 수행문2 ...예제 1
## 45## [1] 45예제 2
## 55## [1] 55
for문기본형식
for 조건: 수행문.... for 조건: 수행문1 else: 수행문2Example
## 1 ## 2 ## 3 ## 4 ## The for loop is overSame Example with R
## [1] 1 ## [1] 2 ## [1] 3 ## [1] 4 ## [1] 5## [1] "The for loop is over"
break: 루프 문을 강제로 빠져나오거나 정지시킬 때 사용## s = 0 ## s = 1 ## s = 2 ## s = 3 ## s = 4 ## s = 5 ## s = 6 ## s = 7 ## s = 8 ## s = 9 ## s = 10 ## 11 s > 10 so finish...contunue: 실행중인 루프 블록의 나머지를 실행하지 않고, 다음 루프로 넘김## 20# R total = 0 for(s in c(1,2,3,4,5,6,7,8)){ if(s %% 2 == 1) next # <===== total = total + s } print(total)## [1] 20
2.5 예외처리
함수는 입력값이 정해진 규칙에 맞게 입력된 경우만 정상 작동
잘못된 입력값을 입력하면 오류 발생
이러한 경우, 입력이 잘못되었더라도 그에 맞는 결과를 출력하도록 코드를 작성하는 것이 필요
R에서 예외처리는
try()또는tryCatch()함수를 이용한다.정상적인 입력시
## 1.414159비정상 입력: 오류발생
오류발생
예 1:
try ... except## abcd예 2:
try ... except ... finally
2.6 파이썬 함수
2.6.1 함수 정의 및 호출
문법
def 함수이름(매개변수,...): 함수 정의 return() #반환값 # 함수호출 함수이름(매개변수값들)예제 1: 매개변수
a,b값을 받아 값을 비교하여 출력하는 함수print_max를 정의# python 함수정의 def print_max(a,b): if a>b: print (a,'is maximum') elif a==b: print (a,'is equal to',b) else: print (b,'is maximum') # 호출 x=5; y=7 print_max(x,y)## 7 is maximum# R 함수정의 print_max = function(a,b){ if(a>b){ cat(a,'is maximum\n') }else if (a==b){ cat(a,'is equal to',b, '\n') }else{ cat(b,'is maximum\n') } } # 호출 x=5; y=7 print_max(x,y)## 7 is maximum예제 2
def add(a, b=0): """ a와 b를 더하는 함수 - a: 실수 - a: 실수(디폴트=0) - return(a+b) """ c = a+b return(c) add(3,7)## 10## 25## Help on function add in module __main__: ## ## add(a, b=0) ## a와 b를 더하는 함수 ## - a: 실수 ## - a: 실수(디폴트=0) ## - return(a+b)
2.6.2 전역 및 지역변수
지역변수: 함수안에서만 사용되는 변수, 함수밖의 같은 이름의 변수와 관계없음
## x is 50 ## Changed local x to 2## x is still 50전역변수: 함수나 클래스 밖에서 선언된 변수가 함수안에 영향을 미치고, 함수안에서 변경가능
## x is 50 ## Changed global x to 2## Value of x is 2