특정 문자열 포함 > 인덱스 반환

도로롱·2022년 11월 16일

문제
문자열 '1231141'의 원소 중 '1'의 값에 해당하는 인덱스를 반환하는 함수를 만들어라

예시
'1231141' --> '0346'


내 생각의 흐름

  • find() 함수는 첫번째 값에 해당하는 인덱스 번호만 출력하므로 쉽게 쓸수 없다.
  • 문자열 한개 한개에 접근한다 =for문 사용

문제 해결 방법

  • 일단 인덱스 번호가 나오게끔 for문을 돌려본다
arr=[]
for i in range(len(s)): #0~6
    if s[i] == '1':
        arr.append(i)
print(arr) # [0,3,4,6] BUT int화가 되어벼러서 다시 join으로 만들어야 하는데 각 값이 str로 되어야 한다

여기서 문제점이 하나 발생했는데 문자열의 길이에 해당하는 범위로 돌렸기 때문에 i값은 모두 int가 되어버렸고 arr 리스트에 담긴 원소들 모두 int가 되어 버렸다.

  • 내가 놓친 부분
    정수 > 문자열
오답 : print(''.join(str(arr)))

이렇게 시도 했는데 [0,3,4,6]으로 그대로 출력되었다. 그래서 for문을 통해 원소 하나하나를 str로 만들어 주어야 한다는 것을 깨달았고 정답이 출력되었다

1. result = ''.join(str(i) for i in arr)
                          # for i in arr
                          # 실행문  str(i)
# 정수 리스트 > 문자열로 바꿔줌
print(result) #'0346' 

혹은 훨씬더 간단하게 map 함수를 사용해서 인자들을 하나하나 str로 바꿔준다

2. print(''.join(map(str,arr))) #arr의 원소들 하나하나 str로 바꿈

+) map 함수를 활용하기
문자열과 숫자가 섞인 리스트를 문자열>숫자로 변환하여 합구하기

a=['4',345,'45']
print(sum(map(int,a))) #394
profile
질문 없는 성장은 없다. 3년차 데이터 분석가

0개의 댓글