프로그래밍/Python
PYTHON(파이썬) 리스트에서 특정 값의 모든 위치 찾기
꿈꾸는 사람_Anthony
2020. 8. 26. 06:34
반응형
파이썬은 (liist).index(target_data)라는 기능을 통해서, 해당 값이 존재하는 인덱스 값을 찾을 수 있게 해준다.
이는 한가지 단점이 있는데 바로 리스트안의 해당 값이 여러번 존재한다면, 가장 작은 인덱스만을 반환하고 나머지는 알 수 없다는 것이다.
이를 해결해주는 간단한 함수를 작성하여 보았다.
이 함수는 주어진 리스트에서 타겟 값이 존재하는 모든 인덱스를 반환해준다.
def find_index(data, target):
res = []
lis = data
while True:
try:
res.append(lis.index(target) + (res[-1]+1 if len(res)!=0 else 0))
lis = data[res[-1]+1:]
except:
break
return res
사용 예시는 다음과 같다.
a = [1,7,2,3,7,5,3,7,1,2,3,7,7]
print(find_index(a,7))
#출력 : [1, 4, 7, 11, 12]
---2021-06-06 추가---
코드의 작동방식(알고리즘)에 대한 설명
* python의 삼항연산자, try-except, 리스트 슬라이싱에 관해서 따로 공부하신 후 설명 보시면 수월한 이해가 가능하실 것입니다.
* data[4+1:]과 같이 초과 index가 리스트 슬라이싱으로 발생하게되면, []으로 대체됩니다.
반응형