자료구조

[자료구조] 리스트 아이템 위치 찾기 ( index() )

scone 2022. 5. 23. 17:20

[ index( arg1, arg2, arg3 ) ]

  •  index( '찾는 값' ) 을 쓰면, 인덱스를 반환해준다.  ( 문자열에서는 find() 함수가 있었다. )
mylist = ['홍길동','박찬호','이용규','강호동']
print(mylist.index('강호동'))

#3

 

  • 단순히 첫번째 값이 아니라 2번째, 3번째 의 값이 궁금하다면 다음과 같이 인덱스 함수를 활용해 줄 수 있다.
mylist = ['홍길동','박승철','박찬호','이용규','강호동', '박승철','홍길동','박승철']
cnt = 0     # 박승철 3개를 찾아보자.
idx = -1
while cnt < 3 :
    idx = mylist.index('박승철',idx+1,)
    print(f'{idx} 에 위치합니다.')
    cnt += 1
    
    
'''
1 에 위치합니다.
5 에 위치합니다.
7 에 위치합니다.
'''

 

  • 찾는 값이 없으면 다음과 같이 에러를 반환한다.
mylist = ['홍길동','박찬호','이용규','강호동', '박승철','홍길동']

print(mylist.index('스콘'))


Traceback (most recent call last):
  File "c:\Users\Jupiter\Desktop\mygit\LearnInZeroBase\자료구조\리스트 기능.py", line 4, in <module>    print(mylist.index('스콘'))
ValueError: '스콘' is not in list

 

  • 리스트 안에 몇개가 들어있는지 모르겠고, 에러를 내기는 싫을 때, 보초법 을 써주면 될 것 같다.
  • 보초법 ; 리스트 맨 뒤에 찾고자 하는 값을 넣어준 뒤, 찾을 때 맨 뒤에서 찾고자 하는 값을 찾고나면 검색을 끝낸다.
mylist = ['홍길동','박승철','박찬호','이용규','강호동', '박승철','홍길동','박승철']

idx = -1
mylist.append('홍길동') # 보초법을 써서 홍길동을 찾아보자.
while True :
    idx = mylist.index('홍길동',idx+1,)
    if idx == len(mylist)-1:
        break
    print(f'{idx} 에 위치합니다.')


'''
0 에 위치합니다.
6 에 위치합니다.
'''