파이썬 질문합니다.
조회수 449회
리스트에 값이 여러개 있는데요 이 값들끼리 비교해서 전의 값이 후에 값보다 작으면 그대로 진행, 전의 값이 후의 값보다 크면 후의 값에 12를 더하는 방식을 어떻게 하는지 질문드립니다.
예를 들어 리스트 a 안에 ['14', '2', '3', '3', '5', '17'] 이러한 요소가 있다면 이 요소를 ['14', '14', '15','15','17','17']이런 식으로 바꾸고싶습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
예시로 들어주신 List안에 숫자가 들어있나요? 문자가 들어있나요? 우선 질문과 댓글에는 문자열로 표현하셔서, 문자열 리스트를 반환하는 코드를 짰습니다.
배열안에 숫자만 들어있다면, int()나 str()코드와 같이 형 전환 함수는 전부 지우시면 됩니다.
그리고 '전의 값이 후에 값보다 작으면 그대로 진행' 이라고 하셨는데, 12를 더한 후의 값보다 작으면인지, 원래 배열의 값보다 작으면인지 명확히 이해가 되지 않았습니다. 우선 질문이 기대한대로 ("이 요소를 ['14', '14', '15','15','17','17']이런 식으로 바꾸고싶습니다") 결과값을 반환하도록 짰습니다.
이 결과값 대로면 '12를 더한 후의 값보다 작으면' 로직이 됩니다.
# 탐색해야할 배열 target = ['14', '2', '3', '3', '5', '17'] print("=== 변환전 ===") print(target) # ['14', '2', '3', '3', '5', '17'] # target 배열 안에 있는 숫자는 0 이상 이라고 가정 # 리스트 안에는 최소 1개 이상의 값이 있다고 가정 # 지난 값 중 가장 큰 값을 임시 저장하는 변수 tempMax = int(target[0]) for index, value in enumerate(target): intValue = int(value) if intValue < tempMax: newValue = intValue + 12 target[index] = str(newValue) tempMax = newValue print("=== 변환후 ===") print(target) # ['14', '14', '15', '15', '17', '17']
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력