728x90
1차원 혹은 다차원 배열 값에 접근할 때
양 끝이 이어진 경우를 다뤄야할 때가 있다.
위 그림의 배열에서 특정 인덱스의 양 옆 이웃(neighborhood, size of 2)에 접근하는 경우
1번의 왼쪽 이웃은 5번, 오른쪽 이웃은 2번이다.
파이썬 코드 작성 시 주의할 점은
왼쪽 이웃의 경우 현재 인덱스에서 1만큼 값을 빼주고 오른쪽은 1만큼 더해줄 때
가장 첫번째 셀의 왼쪽 이웃은 인덱스 -1을 갖고,
가장 마지막 셀의 오른쪽 이웃은 범위를 벗어나는 값인 배열 길이만큼의 인덱스를 갖는다는 것이다.
(파이썬은 인덱스 0부터 시작)
이렇게 인덱스가 순환하는 배열을 인덱스 범위 내에서 접근하도록 할 때
모듈로 연산자 (modulo operator, %)를 이용할 수 있다.
예시로, 길이 5인 1차원 배열(리스트)의 이웃에 접근하는 경우는 다음과 같이 구현할 수 있다.
def get_neighbors_aside(arr, idx):
neighbor_left = arr[(idx - 1) % len(arr)]
neighbor_right = arr[(idx + 1) % len(arr)]
return neighbor_left, neighbor_right
if __name__ == "__main__":
fruits = ['apple', 'peach', 'melon', 'mango', 'grape']
i = 0 # the first one
j = len(fruits) - 1 # the last one
L, R = get_neighbors_aside(fruits, i)
print(L, R)
L, R = get_neighbors_aside(fruits, j)
print(L, R)
728x90
'메모 > 코딩' 카테고리의 다른 글
터미널에서 ssh 접속 및 scp 파일 복사 (feat. 프록시 서버) (0) | 2022.12.07 |
---|---|
[마크다운] html을 사용한 문서 작성 (0) | 2022.06.25 |
[파이썬] 각도를 범위 내로 유지하기 (0) | 2022.06.25 |
[파이썬] gnuplot 와 py-gnuplot 설치 및 실행 (0) | 2022.06.22 |
[파이썬] global 전역변수 사용 (0) | 2022.06.18 |
댓글