#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http 제목[re]loop 1 실습 마지막 문제입니다.2022-04-14 21:27작성자정승재 조교첫 번째 코드와 같이 list 원본에서 원소를 꺼내면서 for문을 돌리는데 remove 함수를 사용하는 것은 매우 위험한 행위입니다.예를 들어, 아래 코드를 실행시켜보면 [2, 4] 결과가 출력이 됩니다.a = [1, 2, 3, 4, 5]for i in a: a.remove(i)print(a)위 코드는 아래와 같이 동작합니다.Iter0: a = [1, 2, 3, 4, 5], index = 0 => 지워지는 item = 1Iter1: a = [2, 3, 4, 5], index = 1 => 지워지는 item = 3iter2: a = [2, 4, 5], index = 2 => 지워지는 item = 5result: a = [2, 4]즉, a 리스트 원본에서 item 하나하나 가져오는 위 for문의 경우, 중간에 원본이 변경되면 indexing이 꼬일 수 있습니다.따라서 for문 안에 리스트의 원소를 제거, 추가의 기능을 넣고 싶을 때는 리스트의 복사본을 사용해야 합니다.그 경우가 바로 "for i in c[:]:"의 두 번째 코드입니다.print(id(c))print(id(c[:]))위 코드를 실행시키면 두 리스트의 id가 다르다는 것을 확인할 수 있습니다.즉, c[:]는 c의 원본이 아닌, 다른 메모리에 생성된 복사본이라는 의미입니다.따라서 for문이 가져오는 index가 꼬일 일이 없습니다. 목록수정삭제답변글쓰기 댓글 [1] 댓글작성자(*)비밀번호(*)내용(*) 댓글 등록 더보기이전loop 1 실습 마지막 문제입니다.초딩코보2022-04-14다음VS code 출력 지연 질문김관희2022-04-14 Powered by MangBoard | 워드프레스 쇼핑몰 망보드