반응형


1. 튜플의 연산

- 튜플은 임의의 객체의 순서를 가지는 모음으로 리스트와 유사한 면이 많다. 차이점은 변경 불가능 형이라는 것이다. 또한 튜플은 리스트가 가지고 있는 것과 같은 메소드를 쓰지 않는다. 튜플은  시퀀스 형이므로 시퀀스 형이 가지는 일반적인 연산을 모두 가진다. (인덱싱, 슬라이싱, 연결, 반복, 길이 연산 등) 튜플은 ()로 표현한다.

 

아래의 문법은 모두 튜플이다.

>>>t =()

>>>t=(1,2,3)

>>>t=1,2,3

>>>r=(1,)

>>>r=1,

 

튜플은 중복과 좌우변 복수개의 자료를 치환할 수 있다.

>>>t=(12345, 54321, 'hello!')

>>>u=t,(1,2,3,4,5)

>>u

((12345, 54321, 'hello!'),(1,2,3,4,5))

>>>x=1

>>>y=2

>>>x,y = y,x

>>>x,y

(2,1)

 

 

2. 패킹과 언패킹

t=1,2,'hello!'

x,y,z=t

a=['foo','bar',4,5]

[x,y,z,w] = a

 

 

3. 리스트와의 공통점과 차이점

 

3-1. 공통점

 - 임의의 객체를 저장할 수 있다는 것과 시퀀스 자료형이라는 것

 - 인덱싱,슬라이싱,연결,반복지원

3-2. 차이점

- 문자열과 같은 변경불가능 시퀀스형(튜플의 한 요소의 값을 인덱스 참조로 바꿀 수 없다.) 따라서, 튜플 아이템을 변경하려면 슬라이싱과 연결(Concate-nation)을 이용해야 한다.

- 메소드를 가지지 않는다.

- 튜플은 포맷 문자열 지원(문자열 부분 참조), 함수 호출시 가변 인수 지원 기능 등이 있다.

 

튜플과 리스트는 상호변환이 가능하다.

>>>T=(1,2,3,4,5)

>>>L=list(T)

>>>L[0]=100

>>>L

[100,2,3,4,5]

>>>T=tuple(L)

>>>T

(100,2,3,4,5)

 

4. 튜플을 사용하는 경우

 - 함수에 있어서 하나 이상의 값을 리턴하는 경우

 - 문자열 포매팅

 - 튜플에 있는 값들을 함수 인수로 사용할 때

 - 그 이외에 고정된 값을 표현하기 위하여 튜플을 사용한다.

 

5. 경로명 다루기

 os.path 모듈의 경로명(pathname)을 다루는 함수(split)가 튜플을 사용한다. 

 

6. url 다루기

urlparse(), urlunparse(), urljoin() 

반응형
반응형


1. 파이썬 리스트

- 리스트는 순서를 가지는 객체들의 집합으로, 파이썬 자료형들 중에서 가장 유용하게 활용된다. 리스트는 시퀀스 자료형이면서 변경 가능형이다.(내장 자료형 중 변경 가능 자료형은 리스트와 사전뿐이다.)따라서 시퀀스 자료형의 일반적인 특징(인덱싱, 슬라이싱, 연결, 반복, 멤버십 테스트 등)을 지원하며, 변경이 가능한 특성에 따라 자료의 크기를 동적으로 임의 조절하거나, 내용을 치환하여 변경할 수 있다. 리스트는 []로 표현된다.

 

 

2. 중첩리스트

>>>s=[1,2,3]

>>>t=['begin',s,'end']

>>>t

['begin',[1,2,3],'end']

>>>t[1][1]

2

 

3. 리스트의 메소드들

 - append, insert, index, count, sort, reverse, remove, pop, extend(리스트를 추가)

 

4. 리스트의 정렬

- 기본적으로 오름차순 정렬

>>>L=[1,5,3,9,8,4,2]

>>>L.sort()

>>>L

[1,2,3,4,5,8,9]

- 내림차순정렬

>>>L=[1,6,3,8,6,2,9]

>>>L.sort(reverse=True)

>>>L

[9,8,6,6,3,2,1]

 

5. 리스트 내장

- range(x) 함수 # 0부터 x보다 작은 수의 정수 리스트 반환

>>>L=[k*k for k in range(10)]

>>>print L

[0,1,4,9,16,25,36,49,64,81]

 

6. 지역적으로 사용 가능한 이름 리스트 얻기

- 인수 없이 dir()하면 현재 지역적으로 사용 가능한 심볼 테이블(사용 가능한 이름 목록)의 내용을 알 수 있다. dir 인수에 임의의 객체를 전달하면, 그 객체 내에서 활용할 수 있는 어트리뷰트(함수,변수 등의 이름들)의 리스트를 리턴한다. 모듈에 어떤 함수나 변수가 정의되어 있는가, 클래스에 어떤 메소드를 활용할 수 있는가 등의 정보를 손쉽게 얻을 수 있다.

 

 

 

반응형
반응형


1. 시퀀스 자료형

 시퀀스 자료형이란, 여러 객체들을 저장하는 저장 자료형이며, 각 객체들은순서를 가진다. 그로인해 각 요소들은 첨자(Index)를 이용하여 참조가 가능하다. 특성을 정리하면 다음과 같다.

 - 여러 개의 객체를 저장할 수 있다.

 - 각 객체들은 순서를 갖는다.

 - 각 객체들은 첨자를 이용하여 참조 가능하다.

 

예)

>>>s = 'abcdef'

 

>>>s[0]    # 인덱싱(indexing)

>>>s[1:3]  # 슬라이싱(slicing)

 

>>>ss = 'abc' + 'def' # 연결하기(concatenation)

 

>>>ss * 4 #  반복하기(repetition) ss+ss+ss+ss 와 동일

 

>>> c in ss  # 멤버쉽 테스트 어떤 객체가 시퀀스 객체에 포함되었는지 검사

True

 

 

반응형
반응형


예전 블로그 복사 - http://blog.daum.net/7dbwnckd/7972577


1. 파이썬 수치 자료형의 표현 범위

 

 데이터형비트 수표현 범위 
 int32비트 -2147483648 ~ 2147483647
 long 무제한(메모리가 허용하는 한) 무제한
 float 64비트 유효자리 15자리, 약 10의+-308승
 complex 실수부 및 허수부 각각 64비트 유효자리 15자리, 약 10의+-308승

 

2. Decimal 클래스의 활용 : 오차 없는 계산 결과를 얻어야 한다면 사용하라.

반응형
반응형


* 예전 블로그 복사. - http://blog.daum.net/7dbwnckd/7972575


Eric Raymond씨도 "How To Become A Hacker"란 글에서 프로그래밍을 배우고 싶다면 python을 배우라고 쓴 적이 있습니다. 저도, 꽤 많은 언어를 쓰고 있다고 생각하지만, Python만큼 강력하며, 쉽게 배울 수 있는 언어를 본 적이 없습니다. Python 언어에 대한 자세한 사항은 Python 관련 책이나 문서에서 충분히 얻을 수 있을 것이므로, Python에 대한 특징을 바라보는 입장에서 정리해 보았습니다. 여가 시간이 있거나, 배우고 싶은 언어를 찾고 있다면, Python을 익혀보기를 강력하게 추천합니다.

 

Programming에 대한 경험이 없는 사람의 경우

  • 복잡한 문법(어느 정도 주관적인 기준으로 바라본 것이긴 하지만)을 필요로 하는 Perl이나 C, C++에 비해 문법이 간단하다. 따라서 배우기 쉽다는 장점이 있다.
  • C와 비교했을 때, 포인터와 같은 배우기 힘든 개념이 없기 때문에, 상대적으로 많은 시간을 프로그램 구조와 디자인 등에 투자할 수 있다.
  • C++과 비교했을때, OOP의 기본적인 사항들은 더욱 빠르게 배울 수 있다.
  • 기본적으로 인터프리터 방식이기 때문에, 코드의 결과를 바로바로 확인해 볼 수 있고, 다양한 운영체제를 지원한다. 또한 원할 경우, 바로 실행 파일(.exe)을 만들어 낼 수도 있다.
  • 다양한 라이브러리를 지원하기 때문에, 상대적으로 적은 양의 코드만으로도 GUI 프로그램, game, CGI 프로그램등을 빠르게 만들 수 있다.

C/C++ 프로그래머인 경우

  • C/C++ 그리고 Bourne shell과 유사한 문법을 가지고 있기 때문에, 기타 다른 스크립트 언어에 비해 익히는 속도가 매우 빠르다.
  • OS에 관련된 기능들은 (예: POSIX interface) 대부분 C/C++에서 제공되는 함수와 같은 이름을 쓰고, 심지어 인자 타입이나 의미까지 비슷한 경우가 많기 때문에, 익혀야하는 함수들이 타 스크립트 언어와 비교할 때 많지 않다.
  • class, virtual function, 제한적인 operator overloading을 지원하기 때문에 C++에서 썼던 디자인 방식 그대로 적용할 수 있다.
  • Mixed language programming -- Python은 기타 다른 스크립트 언어에 비해 C/C++로 python module을 작성하기가 매우 쉽다. (어느 정도 주관적인 견해 포함)
  • 제한적이나마 lambda expression을 제공하기 때문에, LISP/Scheme 등에 익숙한 사람들도 비슷한 코드를 쉽게 만들 수 있다. map(), apply() 함수 제공, closure 제공
  • 다른 스크립트 언어에 비해 문서화가 잘 되어 있으며 (Tutorial, Library Reference, Language Reference 제공), 문법 자체에 LISP/Scheme과 마찬가지로 documentation string을 집어 넣을 수 있고, built-in 함수인 dir()을 쓰면, 함수, 모듈, 오브젝트가 제공하는 심볼 테이블을 바로 볼 수 있기 때문에 다른 스크립트 언어를 쓸 때에 비해, 따로 문서를 찾아보는 빈도가 낮아진다.
  • 함수, 클래스 또는 변수에 Decorator를 직접 제작할 수 있다. Decorator란 C/C++ 문법상 qualifier에 해당하는 것으로 다양한 wrapper를 만들거나 class인 경우 static, class method를 지정할 수 있다. Python 2.4 Decorators 참고

기타 사항

  • Dictionary (Postscript의 dictionary나 다른 언어의 associative array에 해당) 타입이 제공된다. 또한 immutable list에 가까운 tuple 타입이 제공되며, 서로 대입이 가능하기 때문에, 한 줄의 코드로 변수 값을 치환할 수도 있다.
  • 모든 타입은 repr() 연산을 써서 문자열로 변경할 수 있다. 또한 eval() 연산을 써서 문자열을 평가한 후 python type으로 불러 올 수 있다. 따라서 이 기능과 여러 DB 모듈을 잘 활용하면, 모든 Python type을 DB에 저장/로드하는 것이 가능해진다.
  • GTK+ binding이 제공되며, GTK+ C API 또는 C++ API(gtkmm)에 비해 훨씬 간단하게 GUI application을 작성할 수 있다. 또한 이미 GTK binary가 MS Windows 용으로 제공되기 때문에, 간단하게 Windows application도 만들 수 있다. (Pygtk 참고)
  • Python은 SDL binding을 제공하기 때문에, 게임을 만들어 보고 싶은 개발자에게도 최적의 언어라고 할 수 있다. (PyGame 참고)
  • Python 자체적으로 cgi, urllib, httplib 등의 모듈을 제공하며, 다양한 XML parsing module도 제공하며, Berkeley DB, GDBM, sqlite, oracle, ODBC등의 DB 모듈도 제공하기 때문에, Web application을 쉽게 만들 수 있다.
  • zlib, bz2, gzip, zipfie, tarfile등의 모듈을 자체적으로 제공하기 때문에 압축 파일 관련 처리가 매우 쉽다.
  • 다양한 os 기능과 함께 curses 모듈도 제공, terminal에서 실행되는 installer나 administrative tool을 만들기가 편리하다.
  • Built-in source debugger인 pdb를 제공한다.
  • 실제 개발할 때 Emacs(Pymacs, python-mode package 활용)에서 완벽하게 interpreter를 지원하며, 다양한 형태의 (buffer, region)등을 python 실행 결과를 확인할 수도 있다. 또한 Emacs 내부에서 디버거를 실행할 수 있으며(M-x pdb), Web browser w3m package를 쓰면 따로 도움말을 보기 위해 browser를 띄울 필요도 없기 때문에 매우 편리하다! (python-mode, w3m, emacs-w3m 참고)


반응형

+ Recent posts