2013년 2월 8일 금요일

리스트, 딕셔너리, 튜플 요약


세가지 리스트(List) , 사전(Dictionary), 튜플(Tuple)가 있다.

1. 사전은 { } 활괄호를 사용 Dictionary { "server" : "ds", "database" : "master" }

d = {'server' : 'ds' , "database' : 'master'}
d['server'] = 'doseon' 이렇게 변경한다.
d['uid'] = 'guest' 이렇게 삽입한다.

- 사전은 원소 사이에 순서가 없어서 출력할때 순서개념이 없다.
- 사전의 키는 대소문자에민감하다.
>>> d = {}
>>> d['key'] = 'value'
{ 'key' : 'value'}

>>> d['Key'] = "thrid value'
{'key' : 'value' , 'Key' : 'thrid value'}
기존의 키에 값을 할당하면 그냥 예전 값을 새로운값으로 교체한다.
'key' 와 'Key'는 서로 같지 않다.

- 사전에 데이터 유형 섞어 넣을수 있다 그러므로 문자열 정수,
- 원소 제거하기
del d['Key'] 이렇게 하면 지워짐
- 사전 클리어 하기 모든 원소 삭제한다
d.clear()


2. 리스트 List [ ] 각괄호를 사용한다

>>> li = [ 'a', 'b', 'ds' , 'z', 'example' ]

>>> li[0] # a
>>> li[4] # example
리스트는 배열처럼 첫 요소는 언제나 li[0]입니다.

- 음수 인덱스(음수 지표)를 사용할수 있다.
리스트의 끝에서부터 거꾸로 세어 원소를 접근한다.
리스트의 마지막 요소는 li[-1] 이다
li[-3] == li[5-3] == li[2] 입니다.

- 리스트 조각 썰기
li[1:3] # b ds
li[0:3] # a b ds
li[:3] # a b ds
li[:] # a b ds z example

-리스트에 원소 추가하기
>>> li.append("new")
[ a, b, ds, z , example, new]

>>> li.insert(2, 'new')
[ a, b, new, ds, z , example, new ]

>>> li.extend(["two', 'elements' ])
[ a,b, new, ds, z, example, new, two, elements ]

>>> len(li) # 9
append는 원소 하나를 리스트의 끝에 추가

insert는 원소 하나를 리스트에 끼워넣을수 있다.

extends는 리스트를 결합한다.

- 리스트 검색하기
>>> li.index('example') # 6
>>> li.index('c') # Traceback (innermost last): File"", line 1, in ? 에러가 발생
>>> "c" in li # false


- 리스트 원소 제거하기
>>> li.remove('z')
>>> li.remove('new')
>>> li.pop() # pop()은 리스트에서 가장마지막 원소를 꺼내서 그값을 돌려준다. 단 리스트는 바뀌지 않는다.
# li.remove()는 다르다

- 리스트 연산자 사용가능 li += ['example', 'new']
li *= [1,2] *3 # [1,2, 1,2, 1,2]



3. 터플은 리스트와 같은 방식으로 정의된다. 반괄호를 사용 ( )
터플의 원소는 리스트처럼 순서가 정의 됨. 그래서 터플은 0부터 시작한다.
터플에는 메소드가 없다 그래므로 사용시 상수 로 사용가능하다.?
또한 !!!!!!! 터플은 리스트보다 빠르다. 항상 값을 상수로 정의하고서 반복해 사요할 생각이라면 리스트대신 터플을 사용하라




>>> range(7)
[0, 1, 2, 3, 4, 5, 6]
>>> (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7)
>>> MONDAY # 0
>>> TUESDAY # 2
>>> SUNDAY # 6