2012. 5. 25. 17:19

파이썬에서 자료형은 크게 4가지로 분류할 수 있다.

동적 타입 언어이기 때문에 변수 사용시 타입 선언이 필요없다.


c언어에서는 변수 선언시 타입을 명시해야 한다.

int a;

double b;


반면 파이썬은 동적 타입 언어이기 때문에 변수 사용시 타입 선언이 필요없다.

그리고 변수의 타입이 바뀔수도 있다.

>>> a = 5

>>> print type(a)

<type 'int'>

>>> a = 4.0

>>> print type(a)

<type 'float'>

>>> a = 'hello'

>>> print type(a)

<type 'str'>

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

>>> print type(a)

<type 'list'>



Numeric


기본적으로 정수형, 실수형이 있고, 허수형도 지원한다.

정수형은 이론상 크기 제한이 없다.

2.x에서는 c언어에서의 int형보다 큰 수는 Long로 처리하고, 나머지는 int형으로 처리하지만, 3.x에서는 모두 Long으로 처리한다.

>>> n = 1236784319*78321919693185

>>> print n

96867322110508499166015

이런식으로 42억을 넘는 수도 별도의 처리 과정없이 사용 가능하다.


허수형도 기본 자료형으로 제공하는데, 3+5j 이런식으로 표기한다.

>>> a = 3+5j

>>> b = 4-2j

>>> print a*b

(22+14j)


허수 a의 실수부와 허수부를 알아내기 위해선, 다음과 같이 사용해볼 수 있다.

>>> a.real

3.0

>>> a.imag

5.0


허수 a의 켤레복소수도 conjugate() 메소드를 이용하면 된다.

>>> print a.conjugate()

(3-5j)



List


리스트는 여러 자료를 순서대로 저장하는 자료형이다. 배열이나 링크드리스트쯤으로 생각하면 된다. 이 리스트에 넣을 수 있는 자료는 제한이 없다.


한 리스트 안에 정수, 실수, 문자열, 또 다른 리스트, 클래스 객체 등 여러가지를 넣을 수 있다.



배열처럼 원하는 순서의 값에 접근할 수 있다.


리스트는 기본적으로 [ ] 대괄호를 쓴다.

>>> my_list = [ 10, 3.14, 30, 'hello' ]

>>> print my_list

[10, 3.14, 30, 'hello']


Indexing 인덱싱

원하는 인덱스의 값의 접근은 c언어의 배열처럼 대괄호 [ ] 안에 인덱스 넘버를 이용한다.

>>> print my_list[0]

10

>>> print my_list[1]

3.14


인덱스는 0부터 시작한다. 맨 마지막 인덱서의 접근은 -1로 해도 된다. -2는 맨 마지막에서 2번째 인덱스를 의미한다. 

>>> print my_list[-1]

'hello'

>>> print my_list[-2]

30


기본적으로 리스트끼리 + 연산이 가능하다.

>>> L1 = [1,2,3,4]

>>> L2 = ['a','b','c']

>>> print L1+L2

[1, 2, 3, 4, 'a', 'b', 'c']


리스트에 담겨진 객체의 숫자를 알고 싶으면 len( )를 사용하면 된다.

>>> print my_list

[ 10, 3.14, 30, 'hello' ]

>>> len( my_list )

4


리스트에 객체를 추가하려면 append() 메소드를 사용한다.

>>> my_list.append( 'world' )

>>> print my_list

[10, 3.14, 30, 'hello', 'world']


그밖에 리스트 관련 메소드는 다음과 같다.

 append(x)

 리스트 맨 마지막에 x를 추가한다.

 count(x)

 리스트에 x의 갯수를 리턴한다.

 extend(L)

 리스트에 다른 리스트 L을 합친다.

 index(x)

 x가 있는 위치를 리턴한다. 없을 경우 예외 발생. 여러개 있는 경우 처음에 나온 위치 리턴.

 insert(i, x)  i번째에 x를 추가한다.
 pop(), pop(i)  i번째 혹은 맨 마지막 객체를 리스트에서 제거한다.

 remove(x)

 리스트에 x를 찾아 제거한다. x가 없을 경우 예외 발생

 reverse()

 리스트를 역순으로 정렬한다.

 sort()  리스트를 정렬한다.


리스트의 i번째 값을 수정하는 방법은, i번째에 대입하면 된다.

>>> my_list[1] = 3.14159

>>> print my_list

[10, 3.14159, 30, 'hello', 'world']



Slicing 슬라이싱

다음과 같은 리스트를 만들어보자

L = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

'c', 'd', 'e', 'f', 2번째부터 6번째 전까지 접근하고 싶은경우 [2:6] 처럼 접근하면 된다.

>>> L = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

>>> print L[2:6]

['c', 'd', 'e', 'f']


즉 ':'를 기준으로 시작 인덱스와 끝 인덱스를 지정하면 해당 리스트를 반환한다.

List[start:end]

시작 인덱스나 끝 인덱스를 생략할 경우, 각각 처음과 끝을 의미한다.


 L[2:6]

 2번째부터 6번째 전까지

 L[ :6]

 처음부터 6번째 전까지

 L[2: ]

 2번째부터 마지막까지
 L[ : ]  처음부터 마지막까지


슬라이싱할때 step를 지정할 수도 있다.

List[start:end:step]

start부터 end까지 step만큼 건너뛰며 값을 취한다. 생략할경우 기본 1로 취급하는데, 2로 명시 할 경우 다음이 2칸씩 건너뛰며 출력한다.

>>> print L[0:7:2]

['a', 'c', 'e', 'g']


step 값으로 음수를 넣을 경우 반대 방향으로 값을 취한다.

>>> print L[::-1]

['g', 'f', 'e', 'd', 'c', 'b', 'a']

>>> print L[::-2]

['g', 'e', 'c', 'a']


다음과 같이 응용이 가능하다.

>>> L = L[:3] + L[3::-1]

>>> print L

['a', 'b', 'c', 'd', 'c', 'b', 'a']


String


Tuple


Dictionary




'python' 카테고리의 다른 글

python send email with html, image  (1) 2012.11.29
파이썬 계산 속도 향상 psyco  (0) 2012.07.13
파이썬 개발 환경 구성  (0) 2012.05.23
토큰 분리  (0) 2012.05.21
python ascii character to int, int to ascii character  (0) 2012.05.20
Posted by Нуеоп