백준 1167 트리의 지름
특정 원소가 리스트의 몇 번째 인덱스에서 등장하는지 찾아야 했다.
indexOf()가 안되길래 검색해보니 indexOf()는 자바스크립트 문법이었다..
이참에 잘 정리해두자.
위치(인덱스) 찾는 함수 2가지
find()
a = 'abcdab' print(a.find('a')) # 0 print(a.find('c')) # 2 print(a.find('bcd')) # 1 => 문자열의 위치를 찾을 수도 있음 print(a.find('a', 2)) # 4 => 시작점만 지정한 경우 print(a.find('a', 2, 5)) # 4 => 시작점과 끝점을 지정한 경우 print(a.find('a', 2, 4)) # -1 => 끝점이 4인 경우 끝 범위가 3까지임을 알 수 있음 + 찾는 문자가 없는 경우 -1 반환
index()
a = 'abcdab' print(a.index('a')) # 0 print(a.index('c')) # 2 print(a.index('bcd')) # 1 print(a.index('a', 2)) # 4 print(a.index('a', 2, 5)) # 4 # print(a.index('a', 2, 4)) # 에러 발생!! # 리스트에서도 사용 가능 b = [1, 2, 3] print(b.index(2)) # 1 # 튜플에서도 사용 가능 c = ('a', 'b', 'c', 'd') print(c.index('c')) # 2
공통점
처음 검색된 위치를 반환한다.
결과값은 0부터 시작하는 숫자다.
시작 위치와 끝 위치를 지정해줄 수 있다. ex) 변수.find('찾는 문자', 시작 위치, 끝 위치)
차이점
찾는 문자가 없는 경우
- find(): -1 반환
- index(): ValueError 에러 발생
사용 가능한 자료형
- find(): 문자열
- 리스트, 튜플, 딕셔너리 자료형에서 사용 시 에러 발생
- index(): 문자열, 리스트, 튜플
- 딕셔너리 자료형에서 사용 시 에러 발생
✅ 참고
처음 검색된 위치를 반환하는데, 다른 중복되는 값의 인덱스를 모두 구하고 싶은 경우 filter() 함수를 사용하자
filter(function, iterable)
a = [1, 2, 3, 4, 1, 1, 2]
print(a.index(1)) # 0
all_a_index = list(filter(lambda x: a[x] == 1, range(len(a))))
print(all_a_index) # [0, 4, 5]
'CodingTest > Python Grammar Notes' 카테고리의 다른 글
[Python] 위상 정렬(topology sort) (0) | 2023.03.31 |
---|---|
[Python] 유니온 파인드(Union-Find) (0) | 2023.03.27 |
[Python] 나눗셈, 몫과 나머지 (0) | 2023.03.08 |
[Python] 우선순위 큐와 힙(PriorityQueue & heapq) (0) | 2023.03.06 |
[Python] 10진수 -> 2, 8, 16진수 변환 (0) | 2023.01.14 |