-
list와 그 요소들 / slicing / 1D 2D(comma)파이썬 Study/라이브러리 2021. 3. 14. 12:55
참고 :
https://dojang.io/mod/page/view.php?id=2208
dojang.io/mod/page/view.php?id=2291
■ 1-D list
1) 정의 : python 기준 list( ) type으로 선언되어 1차원인 경우
2) 예시
lister = [x for x in range(0,10)] print(f'lister : {lister}') print(f'len(lister) : {len(lister)}') >>> lister : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> len(lister) : 10
3) 1-D list indexing
인덱싱 예시
lister : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
index : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ## >= 0 정수 index
-10, -9, -8, -7, -6, -5, -4, -3, -2, -1 ## < 0 음수 index
4) 1-D list slicing
(a) 정의 :
list[ a : b : c ]
- slice list from [ index >= a to index < b by step c]
- [ ] 로 list 요소 access는 바로 해당 index 정확히 입력해주어야 하는 것이 다르다
lister = [x for x in range(0,10)] #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(f'lister[0:9] : {lister[0:9]}') >>> lister[0:9] : [0, 1, 2, 3, 4, 5, 6, 7, 8] print(f'lister[:5] : {lister[:5]}') >>> lister[:5] : [0, 1, 2, 3, 4] print(f'lister[1:5] : {lister[1:5]}') >>> lister[1:5] : [1, 2, 3, 4] print(f'lister[1:9] : {lister[1:9]}') >>> lister[1:9] : [1, 2, 3, 4, 5, 6, 7, 8]
(b) 마지막 index 포함 기능
- 마지막 index 포함을 위해서는 : 뒤를 공란
OR 마지막 index + 1 → list를 [ ] indexing으로 자를 경우 2번 째 인자는 포함이 안되므로
# lister = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(f'lister[1:] : {lister[1:]}') >>> lister[1:] : [1, 2, 3, 4, 5, 6, 7, 8, 9] print(f'lister[1:10] : {lister[1:10]}') >>> lister[1:10] : [1, 2, 3, 4, 5, 6, 7, 8, 9] print(f'lister[1:11] : {lister[1:11]}') >>> lister[1:11] : [1, 2, 3, 4, 5, 6, 7, 8, 9]
(c) Step 포함 기능
> normal slicing
- LIST[ start : end : step ]
# lister = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(f'lister[2:8:3] : {lister[2:8:3]}') # next step 가기 전에 slicng index 끝남, 8 미포함 >>> lister[2:8:3] : [2, 5]
> 역순 slicing
- LIST[ start : end : step ]
# lister = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(f'lister[3:0] : {lister[3:0]}') >>> lister[3:0] : [] print(f'lister[3:0:-1] : {lister[3:0:-1]}') # step이 거꾸로여야 slicing >>> lister[3:0:-1] : [3, 2, 1]
(d) 공란 indexing
- 공란으로 나두면, list 전체 길이 몰라도 slicing이 가능
- 공란을 사용하면, 전체 길이 몰라도 index error 없이도 존재하는 만큼 slicing 가능
# lister = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(f'lister[:] : {lister[:]}') >>> lister[:] : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(f'lister[::] : {lister[::]}') >>> lister[::] : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
■ 2-D list
1) 정의 : python 기준 list( ) type container 안에 1-D list container가 들어있는 경우
2) 예시:
3) 2-D list indexing
2-D list 예시
a = [ [10, 20],
[30, 40],
[50, 60] ]
# 값 access 방식 :
리스트[세로인덱스][가로인덱스]
리스트[세로인덱스][가로인덱스] = 값
> Tip
- 2차원 리스트의 사각형 구조를 유지하도록 출력하려면 pprint 모듈의 pprint 함수를 사용
from pprint import pprint pprint(a, indent=4, width=20) >>> [ [10, 20], [30, 40], [50, 60]]
4) 2-D list slicing
(a) 정의 :
> list type
list[ a : b ][ c : d ]
import numpy as np m = np.fromfunction(lambda i, j: (i +1)* 10 + j + 1, (9, 4), dtype=int) m = [list(c) for c in m] print(m) print(m[:][0]) >>> [[11, 12, 13, 14], [21, 22, 23, 24], [31, 32, 33, 34], [41, 42, 43, 44], [51, 52, 53, 54], [61, 62, 63, 64], [71, 72, 73, 74], [81, 82, 83, 84], [91, 92, 93, 94]] >>> [11, 12, 13, 14]
> numpy type
np.array[ a : b, c : d ]
m = np.fromfunction(lambda i, j: (i +1)* 10 + j + 1, (9, 4), dtype=int) array( [[11, 12, 13, 14], [21, 22, 23, 24], [31, 32, 33, 34], [41, 42, 43, 44], [51, 52, 53, 54], [61, 62, 63, 64], [71, 72, 73, 74], [81, 82, 83, 84], [91, 92, 93, 94]]) m[:,0] >>> array([11, 21, 31, 41, 51, 61, 71, 81, 91])
반응형'파이썬 Study > 라이브러리' 카테고리의 다른 글
functools (1) 2021.03.14 sort / sorted (1) 2021.03.14 any / all - built in function (1) 2021.03.14 isinstance - built in function (1) 2021.03.14 collections - deque (1) 2021.03.14