어제는 파이썬으로 최댓값을 구하는 방법을 찾아보았습니다.
오늘은 최댓값의 위치를 구해보려고 합니다.
그전에 최댓값 구하는 코드를 복습해보겠습니다.
def max(a)
max_value=a[0]
for i in range(1,len(a)):
if a[i]>max_value :
max_value=a[i]
return max_value
왜 위와 같은 코드가 나오는지 잘 모르시겠다면
https://jae-yeong.tistory.com/2 글을 참고해주세요 =)
먼저 최댓값을 구할 때 a[0]을 기준으로 비교했던 것과 같이 비교 대상이 필요한데요,
위치를 반환받아야 하기 때문에 인덱싱을 활용해보겠습니다.
1. 최댓값의 위치를 출력하는 함수를 정의합니다
2. 인덱싱 범위를 반환해줄 변수 x를 지정하고 0으로 둡니다.
3. 그 이후 과정은 최댓값을 구하는 것과 동일하게 진행합니다.
def max_place(a):
x=0
for i in range(1,len(a)):
if a[i]>a[x]:
x=i
return x+1
x는 0으로 두었기 때문에 처음 for문을 시작할 땐 a[1]와 a[x] 즉, a[0]을 비교하게 됩니다.
a[1]다음엔 a[2]와 비교하고, a[3], a[4]... 차례대로 비교됩니다.
이때 a[0]보다 더 큰 수가 발견된다면 x는 0에서 교체가 되는 것이죠.
예를 들어 i번째 수와 비교했을 때 a[i]가 더 크다면? x는 i로 변환됩니다.
여기서 왜 return값이 x가 아닌 x+1인지 궁금할 수 있는데요.
인덱싱 개념을 다시 말씀드리자면 프로그래밍 언어에서 첫 번째는 1이 아닌 0부터 시작합니다.
n개의 수가 있을 때 마지막 수는 우리의 눈으로 볼 땐 n번째이지만, 언어상에선 n-1번째 수가 되는 것이죠
즉, a[n-1] = n번째에 위치한 수가 되고, a[n] = n+1번째에 위치한 수가 됩니다.
따라서 return값은 x가 아닌 x+1이 되는 것입니다.
그럼 리스트 값을 지정하고 위치를 구해봅시다!
a = [1, 14, 5, 2, 12, 6]
print(max_value(a))
>>> 2
값이 잘 나오네요 =)
혹시 이해가 잘 안 된다거나 수정할 부분이 있다면 언제든지 댓글 남겨주세요!^0^
'Study > 파이썬[Python]' 카테고리의 다른 글
파이썬[Python] | 파이썬의 자료형 (0) | 2023.05.26 |
---|---|
파이썬[Python] 004. 크롤링을 하기 전에.. 라이브러리란? (0) | 2022.03.05 |
파이썬[Python] 003. 크롤링의 정의 (0) | 2022.03.03 |
파이썬[Python] 001. 최댓값 구하기 (0) | 2022.02.27 |