시퀀스 컨테이너의 경우 ( 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 |