파이썬에서 자료형은 크게 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 |