반응형

사전 활용법

 

사전(dictionary) 객체의 특징
* 집합적 자료형
* 자료의 순서를 정하지 않는 매핑형
* 키(key)를 이용하여 값(value)에 접근
* 아이템 : 키와 값의 매핑 1개
값을 저장할 시 키 이용 → member[‘a’] = 7 에서 a가 member 사전 안에 있다면 키 'a'의 value 값이 7로 변경되고, 없다면 'a':7 이 생성됨
사전 출력 시 해쉬 기법을 사용하여 임의의 순서대로 아이템 출력
아이템 삭제 시 del과 함께 키 값 명시 → del member[‘a’]
키는 변경 불가능한 자료(문자열, 숫자, 튜플)만 가능하고 변경 가능한 자료(리스트, 사전)은 쓰일 수 없음
함수 이름은 사전의 키나 값으로 사용 가능


사전 메소드

 

phone.keys( ) → 리스트 안에 각각의 사전 키들만 반환
phone.values( ) → 리스트 안에 각각의 사전 값들만 반환
phone.items( ) → (키, 값)으로 튜플이 원소가 되어 리스트 반환
key in D: 사전 D안에 key를 키값으로 가진 아이템이 있는지 확인
p = phone → phone 자체가 가지고 있는 참조값을 p에 할당
phone.copy( ) → 기존 phone 을 그대로 복사해서 새로운 객체 생성 --> shallow copy
shallow copy → 복사하려는 리스트 안 원소까지는 복사 X
get( ) → key를 주면서 value를 검색하는 메소드
get(‘gslee’, 5284)와 같이 인수를 하나 더 제공하면 gslee가 없을 경우 5284 리턴
pop.item( ) → 임의의 item을 꺼내는 메소드
phone.update(ph) → phone의 내용을 ph로 추가하여 업데이트
clear 메소드 → 전체 사전 내용을 없앰

 

루프를 이용한 사전 내용 참조

 

for~in 구문을 활용하면 사전의 모든 키값을 순차적으로 참조 가능
  for key in D.keys( ):
사전 자체를 for 루프에 활용 가능
  for key in D.keys( ): = for key in D:
키와 값을 동시에 참조하려면 D.items( ) 활용
사전에 입력된 아이템들은 일정한 순서가 없기 때문에 키 값에 대한 정렬은 sort( ) 함수 이용
 1) 아이템들을 리스트로 뽑기 → items = D.items( )
 2) 해당 리스트를 sort( ) 함수 이용하여 정렬 → items.sort( )
 3) 값 할당하기 → for k,v in items:

 

반응형
반응형


시퀀스 자료형의 지원 연산


시퀀스 자료형: 저장된 각 요소를 정수 index를 이용하여 참조가 가능한 자료형
       문자열, 리스트, 튜플


시퀀스 자료형이 가지는 공통적인 연산
1) 인덱싱: L[0] = 0번째 해당하는 값
2) 슬라이싱: L[start:end]→ start부터 end까지 (end는 포함하지 않음)
3) 확장 슬라이싱: L[start:end:step]→ 인덱싱되어지는 각 원소들 사이의 거리가 인덱스 기준으로
        step만큼 떨어짐
4) 연결하기 (+)
5) 반복하기 (*)
6) 멤버십 테스트: a in b→ b안에 a가 있는지 없는지 true, false로 출력
7) 길이 정보: len()
8) for~in 문: for c in ‘abcd’:→ a b c d 로 각 문자들이 접근됨


문자열 정의 및 기초 연산


한 줄 문자열: 작은 따옴표나 큰 따옴표 사용
큰 따옴표 안에 작은 따옴표를 문자처럼 사용 가능
작은 따옴표 안 작은 따옴표를 문자처럼 사용 시 \ 와 같이 사용
\: 다음 라인이 현재 라인의 뒤에 이어짐을 나타냄


여러 줄 문자열: 연속된 작은 따옴표 또는 큰 따옴표 세 개
작은 따옴표 세개로 시작되고 끝나는 문장 안 문자로 사용된 작은 따옴표는 그대로 사용 OK


문자열 정의 및 기초 연산


이스케이프 문자: 문자열 내부에 일반적인 규칙에서 벗어나 그대로 사용 가능

이스케이프 문자

의미

\\ \
\' '
\* *
\b 백스페이스
\n 개행
\t 탭
\0nn 8진법 수 nn
\xnn 16진법 수 nn


문자열 정의 및 기초 연산


문자열 연산
문자열 자료는 절대 변경이나 수정 불가능
따라서 문자열 변경을 위해서는 여러 Slicing을 연결하여 활용 (문자열이 변경되는 것이 아니라
새로운 문자열이 생성되어 재 할당 되는 것)


유니코드
다국어 문자의 올바른 표현을 위해 문자가 하나의 코드로 인식됨
’사용하고자 하는 문자’→ 사용하고자 하는 문자가 코드화 됨
일반 문자열 + 유니코드 = 유니코드
유니코드 타입의 한글 문자열에 대해서는 인덱싱 및 슬라이싱이 올바르게 수행됨



문자열 메소드

upper() : 내용 전부 대문자로 변경
lower() : 전체 결과를 전부 소문자로 변경
swapcase() : case를 바꾸는 것
capitalize() : 첫 문자만 대문자로 변환
title() : 각 단어의 첫 문자가 대문자로 변환
s.count(‘like’) : s 안에 like라는 문자열의 등장 횟수
s.find(‘like’) : s안 like 문자의 인덱스 반환
s.startswith(‘progr’, 7) : 7번째 인덱스부터 시작하여 progr 찾음
u.strip() : u 문자열 앞 뒤의 공백 제거
u.rstrip() : 오른쪽 공백 제거
u.lstrip() : 왼쪽 공백 제거
u.replace(a,b) : u 안의 a 문자를 b문자로 대치
u.split() : 각 단어가 공백을 기준으로 분리되어 리스트로 반환
(문자열).join(t) : 문자열이 리스트 t 내부의 각 원소 가운데 연결함
splitlines() : line기준으로 분리하여 리스트 반환
u.center(60) : 60자리를 확보하되, 기존 문자열을 가운데 정렬
u.ljust(60) : 60자리를 확보하되, 기존 문자열을 왼쪽 정렬
u.rjust(60) : 60자리를 확보하되, 기존 문자열을 오른쪽 정렬
u.center(60, ‘-’) : 확보한 60자리 중 공백에 ‘-’ 문자 채움
isdigit() : 문자열 내 character가 모두 숫자인가?
isalpha() : 문자열 내 character가 모두 영문자인가?
isalnum() : 문자열 내 character가 모두 영문자 또는 숫자인가?
islower() : 문자열 내 charcter가 모두 소문자인가?
isupper() : 대문자?
isspace() : 문자열 내 character이 모두 공백문자인가?
istitle() : 문자열이 title 형식(각 단어의 첫글자가 대문자) 인가?
s.zfill(5) : 5글자 자리 확보 후 문자열 쓰고, 남은 공백에 0 채움

문자열 변환
포매팅 문자: 문자열 내에 존재하는 %
포매팅을 활용한 문자열 변환: 포매팅 문자를 포함하는 문자열 % 튜플
숫자 변환시 사용되는 포매팅 문자 종류 및 설명
----------------------------------------------------
포멧팅 문자 || 의미
%s  || 문자열을 포함한 임의의 객체를 문자열로 변환하여 출력(str() 내장함수 사용)
%r  || 문자열을 포함한 임의의 객체를 문자열로 변환하여 출력(repr() 내장 함수 사용)
%c  || 1글자 문자(ex. ‘%c’ % ‘k)
%d  || 10진 정수 (%5d: 5자리를 확보한 후 정수 포멧팅)
%i  || %d와 동일
%u  || 부호 없는 정수, 음수는 양수처럼 해석함
%o  || 8진수 정수
%x  || 16진수 정수 (소문자 표현)
%X  || 16진수 정수 (대문자 표현)
%e  || 부동 소수점 실수를 지수 형태로 표현
%E  || %e와 동일 (대문자 E 표현)
%f  || 부동 소수점 실수
%g  || 부동 소수점을 편의에 따라 일반 실수 형식이나 지수 형식으로 변환
%G  || %g와 동일 (대문자 E 표현)
----------------------------------------------------


리스트 생성 및 기본 연산

리스트: 시퀀스 자료형이면서 변경 가능(mutable)
리스트에서 지원하는 일반적인 연산 : 인덱싱, 슬라이싱, 연결, 반복, 멤버쉽 테스트
리스트 값 변경 시 : 슬라이스 치환, 슬라이스 삭제([]), 슬라이스 삽입, 리스트 요소 삭제(del),리스트 자체 삭제 가능
중첩 리스트: 리스트 안에 리스트가 존재하는 리스트
len(l) 리스트 l 안 원소의 개수
range: 값을 리스트로 변경해줌 (10이면 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
for문의 헤더에서 각 튜플 값 추출 가능
리스트 안 각 자료가 리스트여도 for 문의 헤더에서 동일하게 값 추출 가능

리스트가 지원하는 메소드
1) s. appened(5) : s 리스트 맨 마지막에 정수 값 5 추가
2) s. insert(3, 4) : 3 인덱스 위치에 정수 값 4 추가
3) s. index(3) : 값 3의 인덱스를 반환
4) s. count(2) : 값 2의 개수 변환
5) s. reverse() : s 자료의 순서를 뒤집기 (반환값 없음)
6) s. sort() : s 자료 정렬 (반환값 없음)
7) s. remove(10) : 자료 값 10 삭제 (자료 값이 여러 개 존재하면 첫 번째 것만 삭제)
8) s. extend([60, 70]) : 새로운 리스트[60, 70]을 기존 리스트 s 뒤에 병합
9) s. append([60, 70]) : append로 새로운 리스트를 추가하면 하나의 자료 요소로서 추가

리스트를 스택으로 사용하기 : 제일 나중에 들어온 값이 제일 먼저 나감
리스트를 큐로 사용하기 : 제일 나중에 들어온 값이 나중에, 먼저 들어온 값이 먼저 나감


리스트 정렬하기

리스트의 sort 메소드
· L. sort() 함수는 리스트 L 자체를 변경하며 리턴 값을 반환하지 않음
· 디폴트로 cmp(a,b) 내장함수 이용하여 정렬 방식 결정
   * cmp(a,b) 에서 a < b이면 -1, a > b이면 1, a = b이면 0을 리턴
· 기본 정렬 방식을 변경하려면 sort() 함수의 인자로 cmp 함수 입력
· 여러 튜플을 요소로 지닌 리스트 경우 튜플의 첫번째 값이 아닌 다른 위치에 있는 값을
   기준으로 정렬
· sort 함수의 인자로 reverse 값을 받을 수 있음   * false면 정순, true면 역순으로 변환
· sort 함수의 인자로 key 함수 입력 가능한데, key 인자에 함수가 할당되어 있으면 각 리스트
   원소에 대해 비교함수 호출 직전에 key 함수 먼저 호출
  
sorted 내장 함수
· sorted() 내장함수는 L 자체에는 내용 변경 없이 정렬된 새로운 리스트 반환
· 두 번째 인자로 cmp 함수 지정 가능하여 mycmp 사용 시 대소 관계 에 따른 순서를 반대로 바꿈
· 인자로 reverse와 key 지정 가능

L.reverse()와 reversed() 내장 함수
· L.reverse()도 반환값 없이 L 자체를 역순으로 뒤집음 (역순 정렬X)
· reverse() 내장 함수는 sorted() 처럼 내용이 뒤집힌 리스트 반환

일반적인 리스트 생성법을 리스트 내포 방식을 이용하여 작성하기 편하게 변경 가능
L = [ ]
for k in range(10) :      →    L = [ k * k for k in range(10) ]
  L. appened(K*K)          print L
print L


리스트 내포 리터링 문법
[expression for expr1 in sequence 1
        for expr2 in sequence 2 ………
        for exprN in sequence N if condition
· if 뒤 condition 조건이 충족하는 숫자일 때 expression 안 변수 적용
· expr1, expr2의 값들이 expression 안에 쓰임
· expression 평가 결과는 반드시 한 개 원소



반응형
반응형

파이썬 제어문


들여쓰기와 제어문
- 파이썬은 들여쓰기를 강제하여 코드의 가독성을 높임
- 가장 바깥쪽 코드는 반드시 1열에 시작
- 블록 내부에 있는 statement들은 동일한 열에 위치해야 함
- 블록의 끝은 들여쓰기가 끝나는 부분으로 간주
- 파이썬에는 {. }. begin, end 등의 키워드가 존재하지 않음
- 들여쓰기를 할 때에는 탭과 공백을 섞어 쓰지 않음

if문
- if, elif, else문으로 쓰이나 elif와 else문은 꼭 필요하지는 않음
- 조건식이나 else 다음에 콜론(:) 표기 필요
- 들여쓰기를 잘 지켜야 함
        if 조건식 1:
           statement
        elif 조건식 2:
           statement
        else:
           statement


for문
- 컨테이너 객체가 지닌 각 요소가 타겟에 들어감
- enumerate() 내장함수 : 컨테이너 객체가 지닌 각 요소값 뿐만 아니라 인덱스 값도 함께 반환
- break: 루프를 빠져나감
- continue: 루프 블록 내의 continue 이후 부분은 수행하지 않고 루프의 시작부분으로 이동
- else: 루프가 break에 의한 중단 없이 정상적으로 모두 수행되면 else 블록이 수행됨
- for 루프는 중첩으로 사용 가능
for <타겟> in <컨테이너 객체>
   statement
else:
   statement


while문
- while 조건식이 만족하는 동안 while 블록내의 statements 들을 반복 수행

함수의 장점 및 함수 사용법
- 함수의 장점 : 반복적인 코드 사용을 없애 코드 길이를 짧게 만들고, 유지보수가 쉬워짐
- 함수 이름에 저장된 레퍼런스를 다른 변수에 할당하여 그 변수를 이용한 함수 호출 가능
- 함수의 몸체에는 최소 한 개 이상의 statement가 존재해야 함
  따라서, 아무런 내용이 없는 몸체를 지닌 함수의 경우 pass 키워드를 몸체에 적는 것이 필요
- 함수에서 다른 함수 호출이 가능하며, 인자의 이름과 함께 인자 값 넘기는 것이 가능
- 인자의 디폴트 값을 지정할 수 있으며, 두 개 이상의 값을 동시 반환 가능


함수 호출 시 동적인 자료형 결정
- 파이썬에서 모든 객체는 동적으로 실행 시간에 그 타입이 결정됨


재귀적 함수 호출
- 재귀 함수: 함수 몸체에서 자기 자신을 호출하거나 1부터 n까지 더하는 함수
- 수학에서 점하식과 유사한 코드로 반드시 종결조건이 만족할 때 반환 값이 있어야 함





.

반응형
반응형

산술 연산자


산술 연산자: 더하기, 빼기, 곱하기, 나누기와 같은 연산자

산술 연산자의 우선순위는 [단항연산자], [지수연산자], [곱하기, 나누기, 나머지, 몫], [더하기, 빼기] 순위

단항연산자: 피연산자가 2개가 아닌 1개만 있는 연산자(+,-)

곱하기, 나누기, 나머지, 몫: *, /, %, // 로 결합순서가 왼쪽에서 오른쪽

지수연산자: ** (2**3은 2의 3승을 뜻함)로 결합순서가 오른쪽에서 왼쪽

더하기, 빼기: +, - 로 결합순서가 왼쪽에서 오른쪽

정수 + 실수 = 실수

정수 / 실수 = 실수

print divmod(a,b) = (a/b, a%b)


관계 연산자


관계 연산자: 객체가 지는 값의 크기(대소)를 비교하여 True 또는 False로 반환함

a==b: a와 b가 같다.

a!=b: a와 b가 다르다.

a>b: a가 b보다 크다.

a<=b: a가 b보다 작거나 같다.

문자열, 튜플, 리스트의 관계 연산 비교는 일반 사전 순서로 비교

사전에서 앞에 나오는 값이 작은 값으로 평가

서로 다른 자료형 간의 크기 비교 시 ‘숫자<사전<리스트<문자열<튜플’ 순으로 커짐

is 함수: a is b는 a가b다는 의미


논리 연산자


논리 연산자 = 부울 연산자: 피연산자의 값으로 진리값인 True 또는 False를 취해 논리적인 계산을 수행하는 연산자

논리 연산자의 종류: and, or, not

논리 연산자 자체가 값을 반환하지 않고, 논리 연산을 따라 최종적으로 평가 되어진 값이 반환됨

진리값에 해당하는 True와 False는 다른 사칙 연산자를 만나면 다음과 같이 평가됨
  True: 1
  False: 0

bool() 내장함수: 수치 값을 진리 값으로 교환 가능

값이 없는 빈 객체나 None 객체는 False로 평가됨

실제 코드 개발 시 연산자 우선순위에 많은 의존 없이 괄호()를 적절하게 사용하여 코드의 가독성을 높이는 것이 좋음

반응형
반응형

리스트, 튜플, 사전

 

리스트의 정의와 리스트 기본 연산

리스트: 임의의 객체를 순차적으로 저장하는 집합적 자료형
리스트 기본 연산: 문자열이 지닌 대부분의 연산들은 리스트도 지원

 

range() 함수를 통한 인덱스 리스트 생성
range(k): 0부터 k-1까지의 숫자의 리스트를 반환함

 

 

튜플의 정의와 기본 연산


튜플: 리스트와 유사하지만 튜플 내의 값을 변경할 수 없음, 각 값에 대해 인덱스가 부여됨
튜플의 상수적 성격: 튜플은 내용 변경 불가(리스트는 내용 변경 가능)

 

사전의 정의와 기본 사용법


사전: 키를 이용하여 값을 저장하는 자료 구조이며 저장된 각 자료에 대한 순서는 의미 없음
사용법: x라는 키값을 넣으면 값 y를 반환함

 

 


내장 자료형의 정리와 객체 신원 파악

 

내장 자료형의 특성 정리
수치형: 값 변경 불가능
문자열: 시퀀스 자료형이며 변경 불가능
리스트: 시퀀스 자료형이며 변경 가능
튜플: 시퀀스 자료형이며 변경 불가능
사전: 매핑 유형이며 변경 가능

 

내장 자료형 알아보기


Type(A): A의 자료형을 알 수 있음
==: 자료형의 비교

 

객체의 신원 식별하기


id(): 객체의 식별자를 반환
is 키워드: 두 객체의 식별자가 동일한지 테스트

 

 

반응형
반응형

수치 자료형

 

  • 정수형 상수: 입력 형태에 따라 10진 정수, 8진 정수, 16진 정수로 입력할 수 있으며 출력은 10진 정수로만 가능함
  • 실수형 상수: 1.2, 3.5e3과 같이 소수점을 포함하고 있는 상수
  • 롱형 상수: 수치가 큰 수는 롱형으로써 숫자 마지막에 L을 붙여 표시
  • 복소수형 상수: 복소수는 실수(ex. 10)와 허수(ex. 20j)로 이루어짐
  • 수치 자료형의 치환: x가 지니고 있는 1의 값이 변경되는 것이 아니라 새로운 객체 2로 레퍼런스를 변경하는 것임

 

 

수치 연산 내장 함수

abs: 절대값형 / int: 정수형 / long: 롱형 / float: 실수형 / complex: 복소수형
divmod(A, B): A를 B로 나눈 몫과 나머지 / pow(A, B): A의 B제곱

math 모듈의 수치 연산 함수: math 모듈은 수학적으로 정의된 변수, 함수를 지원함

 

 

문자열

 

문자열 형식
한 줄 문자열: 작은 따옴표나 큰 따옴표 사용
여러 줄 문자열: 연속된 작은 따옴표 또는 큰 따옴표 세 개

 

인덱싱(Indexing)과 슬라이싱(Slicing)
인덱싱: 문자열의 각 문자에 순차적으로 인덱스가 붙음
슬라이싱: 문자열의 인덱스를 이용하여 문자열의 전체 또는 일부를 출력

 

문자열 연산
+: 연결 / *: 반복

 

문자열의 길이
len(): 문자열의 길이를 반환하는 내장함수

 

문자열내 포함 관계 여부
in, not in: 문자열내에 일부 문자열이 포함되어 있는지를 파악하는 키워드

 

 

 

반응형
반응형

 

파이썬 예약어 및 내장 함수예약어


의미: 이미 문법적 용도로 사용되고 있는 단어
주의점: 예약어를 식별자로 사용하면 안됨


예약어 종류 알아보기: import keyword로 keyword 모듈 불러온 후 print keyword.kwlist


예약어 종류
'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec',
'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print',
'raise', 'return', 'try', 'while', 'with', 'yield'

 

내장 함수


의미: 별도의 모듈 추가 없이 제공되는 함수, 대표적으로 abs, max, min, pow, chr, str, range,
          type 등이 있음
abs(): 수치형 자료의 절대값을 반환하는 함수
max(): 시퀀스 자료형 원소 중 최대값을 반환하는 함수
type(): 객체의 자료형을 반환하는 함수

 

파이썬 식별자와 변수 사용식별자


조건: 대소문자 구별, 대소문자 알파벳과 언더바(_)로 시작 가능, 숫자로는 시작 불가능, 특수문자
          사용 불가변수
생성: 해당 변수에 임의의 값이 할당되면 변수 생성
삭제: del 예약어 사용
주의점: 예약어, 내장 함수, 모듈 이름은 변수명으로 사용하면 안됨

 

파이썬 기초 문형주석문

   : 샵(#)으로 시작된 문장은 주석문연속라인: 역슬래시(\)로 현재 라인과 다음 라인을 연결할당문: 등호를 사용한 연산, 등호의 왼쪽에는 변수, 등호의 오른쪽에는 표현식확장 할당문
+=의 예: a+=4는 a=a+4와 동일
-=의 예: a-=4는 a=a-4와 동일
*=의 예: a*=2+3는 a=a*(2+3)과 동일
/=의 예: a/=2+3는 a=a/(2+3)과 동일객체와 할당: 객체의 변수는 해당 객체의 레퍼런스를 지니고 있음

 

콘솔 입출력콘솔 입력


raw_input(): 문자열 입력 내장 함수
int(): 문자열을 정수로 변환하는 내장 함수
input(): 정수, 실수, Expression 입력 내장 함수콘솔 출력
print: 화면에 자료를 출력하는 보편적인 statement

반응형
반응형

[Python] 개발환경 만들기



Python 전용 통합개발환경(IDE) 사용


• Enthought Canopy

    - 별도의 파이썬 설치 없이 아래 통합개발환경을 사용하면 자동으로 파이썬이 설치됨

    - CANOPY EXPRESS (Free) 다운로드 사이트 :

        https://www.enthought.com/products/canopy/


• Python 실행

   - Enthought Canopy 직접 활용

   - 커맨드 창 (터미널)

   - ipython 명령어 이용



* ipython이 좀 더 대화환경을 깔끔하게 제공.



이클립스 사용


• 파이썬 설치

    - 파이썬 다운로드 사이트 :

      https://www.python.org/downloads/

   - 파이썬 2.7.x 버전 사용


• 이클립스에서 파이썬 설치 방법

    - PyDev 플러그인 설치

    - 참고 사이트: http://arisu1000.tistory.com/27707


* PyDev가 있어야 제대로 설치 된 것
* Quick Auto-Config 클릭 → 시스템 내 파이썬 인터프리터 검색


추천하는 코딩 환경 구성 방법

• 1) Enthought Canopy 설치
• 2) 이클립스 설치 (설치가 안되어 있는 경우)
• 3) PyDev 플러그인 설치


- 두 가지 파이썬 코딩 환경을 합쳐 사용하는 것을 추천
- 기본적인 파이썬 설치보다 Canopy 설치가 더 유리
- 환경설정 관련된 것도 한꺼번에 설정 가능하고 도구 같이 설치 가능


..........................................................

파이썬 코딩 환경 구축
* Python 전용 통합개발환경(IDE) 사용 : Enthought Canopy 별도의 파이썬 설치 없이 자동으로
    파이썬 설치
* 이클립스 사용 : 이클립스에 파이썬을 직접 설치하여 사용
* 두 가지 방식을 모두 사용하여 파이썬 코딩 환경을 구축하는 것을 추천CANOPY EXPRESS (free) 다운로드 사이트
* http://www.enthought.com/products/canopy/파이썬 다운로드 사이트
* http://www.python.org/downloads/이클립스에 파이썬 설치 방법 : PyDev 플러그인 설치
* http://arisu1000.tistory.com/27707






반응형

+ Recent posts