Exercise 38 질문
209
작성한 질문수 6
안녕하세요 강의 잘 듣고 있습니다.
Exercise 38에 관해 질문드립니다.
지시사항을 보고 제가 처음 구상한 코드는 주어진 리스트에서 음수인 멤버를 제거한 뒤 0 이상의 정수만 남은 리스트를 출력하는 것입니다.
이 구상에 따라 필요한 작업을 구분해보니 다음과 같습니다 :
1. 주어진 리스트의 복본을 생성함.
- 음수 삭제 방식으로 하려니 원본을 조작하면 인덱스가 바뀌는 문제가 해결되지 않아 복본을 만드는 방법을 구상하였습니다.
2. for문으로 원본리스트의 인덱스를 순서대로 지나가도록 함.
2-1. for문 안에서 if문으로 원본리스트의 각 멤버가 음수인지 판별함.
2-2. 복본리스트의 멤버가 음수이면 복본리스트에서 remove메소드로 제거함.
3. 최종으로, 음수가 제거된 복본리스트를 출력함.
위의 구상대로 코드를 만들면 지시된 내용대로 출력이 될 줄 알았습니다.
그러나 코드를 작성하고 실행해보니 에러가 발생하였고 구체적으로 살펴보니 다음의 세 가지 문제가 있어보입니다 :
문제 1. "복본리스트(num_list_dupl)=원본리스트(num_list)" 식으로 작성하면 복본리스트를 remove메소드 등으로 조작해도 원본리스트는 불변하리라고 생각하였지만 원본리스트도 같이 변경됨을 확인하였습니다.
문제 2. 위 문제 1과 연계되어, 원본리스트가 변경되는 바람에 원본리스트 멤버의 음수여부 판단하는 if조건문에서 3번째 인덱스의 멤버인 33이 그냥 지나쳐버리는 문제가 있습니다. 이는 원본리스트가 변경되면서 인덱스도 바뀌어 발생한 것으로 추측합니다.
문제 3. 인덱스 6에서 에러가 발생하였습니다. 이 역시 문제 2에서 발견한 바와 같이 원본리스트가 변경되면서 인덱스 6이 없어진 이유로 발생한 에러로 파악합니다.
결국 문제의 근원은 제가 복본리스트를 만든 코드에 있는듯 합니다.
어떻게 하면 원본리스트가 불변하도록 복본리스트를 만들 수 있는지 알고 싶습니다.
긴 질문 읽어주셔서 감사합니다.
아래는 제가 작성한 해당 코드입니다.
num_list = [0, -11, 31, 22, -11, 33, -44, -55]
num_list_dupl = num_list
print("원본 리스트의 멤버 수는", len(num_list))
print("원본 리스트의 복본 리스트 : ", num_list_dupl)
print("============================================\n")
for j in range(0,len(num_list)) :
print("{}번째 반복문".format(j+1))
print("{}번째 리스트멤버의 값은 {}".format(j+1, num_list[j]))
if num_list[j] < 0 :
print("{}는 음수이므로 복본 리스트에서 제거함.".format(num_list[j]))
num_list_dupl.remove(num_list[j]) #복본 리스트에서 음수인 멤버 제거.
print("음수 제거 후 복본 리스트 : ", num_list_dupl)
print("원본 리스트 : ", num_list)
print("============================================")
else :
print("{}는 0이상의 정수".format(num_list[j]))
print("복본 리스트 : ", num_list_dupl)
print("원본 리스트 : ", num_list)
print("============================================")
답변 1
1
안녕하세요. 이 부분은 양해를 부탁드립니다.
영상 초반에 말씀드린대로, 강의 내용에 대한 문의만 부탁을 드려요. 영상과 새소식에서도 말씀을 드렸던 부분이라서요. 새소식도 한번 확인부탁드려요. 다시한번 이 부분 양해부탁드립니다.
간단히만 리스트 원본을 복사하려면 다음과 같이 copy() 를 쓰셔도 좋습니다.
bar = [1, 2, 3]
copy_list = bar.copy()
크롤링, 영상을 따라해도 제미나에게 물어봐도 안되요
0
31
1
정규표현식 및 여러 코드 꼭 외워야 하나요?
0
38
1
리스트 함수형도 정수 데이터 받을 수 있나요?
0
45
1
크롤링 관련 질문
0
62
1
문제 답이 없는 버전은 없나요?
0
74
1
requests, BeautifulSoup 임포트 부분에 대해 문의드립니다.
0
83
1
업데이트 강의
0
97
2
선생님 강의중에서 sqlite3 강의를 제공한 강의가 있나요?
0
123
2
연습용 예제 파일
0
76
1
lxml 관련 오류
0
106
1
SAVE Request 창 띄우는 법
0
92
1
포스트맨 사용법이 바뀌어서 강의를 따라가지 못하겠습니다. 2
0
74
1
포스트맨 사용법이 바뀌어서 강의를 따라가지 못하겠습니다.
0
94
1
예제 2, 4, 6에 대한 풀이 방식 질문.
0
89
1
문제 파일
0
78
1
pdf 파일 내 코드 복붙시 공백
0
291
1
데이터 저장 강좌 문의 건
0
95
1
" " 와 ' '의 차이를 알고 싶습니다
0
242
1
Exercise 22. 문자열 다루기 (strip)
0
131
1
list함수로 리스트 선언하면 실패하는데 이유는 무엇입니까?
0
187
1
셀 삽입후 바로 기입이 가능합니까?
0
139
2
주피터 노트북 마우스 스크롤? 오류
0
1546
2
등호 2개('==')의 의미가 뭐죠?
0
459
2
페이지가 넘어갈 때 url 변하지 않는 경우
0
265
1





