Python

[파이썬] 인덱스 찾기 ( index()와 find()의 차이점 )

bornsoon 2024. 8. 17. 14:59
s = 'abcdefa'

# 문자열 인덱스를 구하는 방식은 find()와 index() 동일!!

s.find('a')
# 0 반환

s.find('def')
# 3 반환 (문자열 인덱스 찾기도 가능!!)

s.find('b', 1)
# 1 반환 (두 번째 인자 1은 시작 위치 --> 'b'의 위차기 1이기때문에 s.find('b')의 반환값과 동일)

s.find('b', 3, 8)
# 7반환 (세 번째 인자 8은 마지막 위치 + 1 --> 8 바로 앞의 7까지)

s.find('b', 3, 8)  # ---> -1 반환
s.index('b', 3, 8)  # --> 에러 발생

파이썬에서는 인덱스를 찾을 때 쓸 수 있는 index 함수와 find함수가 있다.

두 함수 모두 찾고자 하는 요소의 인덱스를 반환해주는데,

find함수는 문자열에만 사용할 수 있고

 

index함수는 문자열과 리스트, 튜플에서 쓸 수 있다.

또한 반환값이 없을 경우

find함수는 -1을 반환하고,

index함수는 ValueError를 발생시킨다.

 

 

두 함수는 모두 처음 검색된 인덱스만을 반환시켜주기 때문에

중복된 요소의 모든 인덱스를 구하고 싶을 때는 filter 함수를 쓰면 된다.

filter함수는 다음과 같다.

# fliter(조건 함수, 순회 가능한 데이터)

num = [2, 4, 6, 8, 10, 12, 14, 16]

def filter_func(n):
	return n > 10
    
# 반환값 filter 타입
filter(filter_func, num)


# 람다 함수로 필터링
fliter(lambda n: n > 10, num)

# 리스트 변환
list(filter(lambda n: n > 10, num))
728x90