2023. 8. 4. 12:25
파이썬
728x90
반응형
파이썬은 for문에서 반복문이 한 번 돌고 날 때마다 증가되는 내부 카운터를 사용하여 리스트에서 실행되는 지점을 따라가도록 설계되었다. 만약 카운터의 값이 증가하다가 리스트 길이와 같은 값에 도달하면 반복문이 종료된다.
# 복제하기(Cloning)
def removeDups(L1, L2):
for e1 in L1:
if e1 in L1:
L1.remove(e1)
L1 = [1,2,3,4]
L2 = [1,2,4,6]
removeDups(L1, L2)
print('L1 =', L1)
위 예제의 경우 숨겨진 카운터가 0에서 시작하여 L1[0]이 L2에 있다는 것을 발견하고는 리스트에서 제거한다. 그래서 L1의 길이가 3이 된다. 그리고서 카운터는 1 증가하고 L1[1]이 L2에 있는지 확인하게 된다. 하지만 이것은 L1[1]이 원래 가지고 있었던 값(즉 2)가 아니라 2가 제거된 후의 L1[1]의 값, 즉 3이다. 그러므로 보시다시피 리스트가 반복문 안에서 수정된다면 원하는 결과를 얻지 못하게 되는것이다.
출력결과
L1 = [2, 4]
728x90
반응형
'파이썬' 카테고리의 다른 글
(파이썬) 리스트 조건 제시법 (0) | 2023.08.04 |
---|---|
(파이썬) 리스트 조건 제시법 (0) | 2023.08.04 |
(파이썬) 복제하기 L1.remove(e1) (0) | 2023.08.04 |
(파이썬) for문을 사용한 리스트와 가변성 (0) | 2023.08.04 |
(파이썬) 리스트와 가변성 (0) | 2023.08.04 |