반복문을 사용하여 list의 element를 수정하고자 할때에
list에저장된 값에 변화가생긴다면 의도와는 다른 결과가 종종 나오곤 한다.
list의 i번째 값이 0 이라면 그 다음값은 1로 바꾸는 코드를 짜보자.
[0,0,0] ->[0,1,1]
이것을 아무생각없이 for loop로 구현해보면
olist = [0, 0, 0]
for i in range(len(olist) - 1):
if olist[i] == 0:
olist[i+1] = 1
print(olist)
결과값 [0, 1, 0] 을 얻을 수있다.
중간에 olist[1]의 값이 1로바뀌었기때문에, olist[2]의 값이 변하지 않게 되는것이다.
그래서 리스트를 직접 수정한다기보단 새로운 리스트를 만들고, 기존 리스트에 덧씌우는것을 추천한다.
- 1. list comprehension
olist = [0, 0, 0]
new_list = [0] + [1 if olist[i] == 0 else olist[i+1] for i in range(1, len(olist))]
- 2. for loop
new2_list = [olist[0]]
for i in range(1, len(olist)):
if olist[i] == 0:
new2_list.append(1)
else:
new2_list.append(olist[i])
'it공부 (개념) > python' 카테고리의 다른 글
enumerate(이뉴머레이트) 함수: 배열의 인덱스와 값에 함께 접근해보자/ 파이썬 (0) | 2023.03.20 |
---|---|
__init__? 파이썬 magic method(매직메서드)란? (1) | 2023.01.03 |