반응형
반응형

사전 활용법

 

사전(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:

 

반응형
반응형

Tadpole DB HUB 개발자 가이드  :  https://github.com/hangum/TadpoleForDBTools

올챙이는 웹 기반 DB 관리 도구입니다. 웹 브라우저에서 올챙이를 통해 다양한 DB로 접속할 수 있고, 권한을 조절 할 수 있습니다. 올챙이의 최종 지향은 DB HUB 입니다.

목차


반응형
반응형


시퀀스 자료형의 지원 연산


시퀀스 자료형: 저장된 각 요소를 정수 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 키워드: 두 객체의 식별자가 동일한지 테스트

 

 

반응형

+ Recent posts