문제
문자열 '1231141'의 원소 중 '1'의 값에 해당하는 인덱스를 반환하는 함수를 만들어라
예시
'1231141' --> '0346'
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