본문 바로가기

Script/Python

04. Sequence Containers

시퀀스 컨테이너의 경우 ( list, tuple, string, byte )
 
여러 방식의 인덱싱이 가능한데 이에 대해 살펴본다.
 
 
 
Indexing
 
아래 규칙에 따른다.
 
lst [ start slice : end slice : step ]
 
인덱스는 아래와 같이 계산되고 start slice , end slice 인 경우에는 생략할 수 있다.
 
(생략시 양끝단을 가리킴)
 
 
각각의 경우에 대한 예는 아래와 같다.
 
lst = [10, 20, 30, 40 ,50]
 
print ( lst[0 ]     ) # 10
print ( lst[-1 ]    ) # 50
 
print ( lst[:-1 ]   ) # 슬라이스 0 ~ 슬라이스 -1  => 10, 20, 30, 40
print ( lst[1 :-1 ]  ) # 슬라이스 1 ~ 슬라이스 -1 => 20, 30, 40
print ( lst[1 :3 ]   ) # 슬라이스 1 ~ 슬라이스 3 => 20, 30
print ( lst[:3 ]    ) # 슬라이스 0 ~ 슬라이스 3 =>10, 20, 30
print ( lst[3 :]    ) # 슬라이스 3 ~ 마지막 슬라이스 => 40, 50
 
print ( lst[::2 ]   ) # 0번 인덱스 부터 2 step 씩 건너띠며 읽기 => 10, 30, 50
print ( lst[::-1 ]  ) # 마지막 인덱스부터 1 step 씩 전진이동 하며 읽기 => 50, 40, 30, 20, 10
print ( lst[::-2 ]  ) # 마지막 인덱스부터 2 step 씩 전진이동 하며 읽기 => 50, 40, 10
 
print ( lst[:]     ) # 시퀀스를 얕은 복사함
 
 
Iterator
 
이터레이터는 Sequence Container 에서 객체의 요소에 순서대로 접근할 수 있는 객체이다.
 
s = 'abc'
it = iter (s)
print(next(it)) #a
print(next(it)) #b
print(next(it)) #c
 
 
generator
 
함수에 return 대신 yield 를 적으면 함수가 iteration 을 도는 동안 끝나지 않고 
 
가장 최근에 호출된 상태로 실행된다.
 
def abc():
    data = "abc"
    for c in data:
        yield c
       
it = iter (abc())
 
print(next(it)) # a
print(next(it)) # b
print(next(it)) # c
 
 
 

'Script > Python' 카테고리의 다른 글

06. Sequence Container - Tuple  (0) 2020.01.14
05. Sequence Container - List  (0) 2020.01.14
03. Base Types  (0) 2020.01.14
02. Eclipse 플러그인_Python  (0) 2020.01.14
01. Install _ Python  (0) 2020.01.14