목록에서 음수를 제거하려고합니다. 나는 계속해서 두 개의 연속적인 음수가 제거되지 않는 문제에 직면했다. 내 코드는 매우 간단합니다 :반복 - 파이썬
numbers = [-5, 1, -3, -1]
def remove_neg(num_list):
for item in num_list:
if item < 0:
num_list.remove(item)
print(remove_neg(numbers))
#[1, -1]
나는 내 코드의 4 가지 버전을 시도하고 내 머리에서 약간의 머리카락을 잡아 당겨 후 온라인 답을 발견했다. 내가 찾은 대답은 r = numbers [:]로 지정된 다음 초기 목록 대신 r에서 항목을 제거했습니다.
def remove_neg(num_list):
r = numbers [:]
for item in num_list:
if item < 0:
r.remove(item)
print(r)
이 개념은 두 개의 목록 변수가 별도의 데이터를 가리키는 것으로 이해합니다. 왜 내가 이해하지 못하는지, 내 초기 코드가 작동하지 않는 이유입니다. for i in numbers:
은 목록의 모든 항목을 반복해야합니까? 두 연속 숫자가 왜 똑같이 취급되지 않습니까? 나는 이유를 찾고 샅샅이 뒤졌고 대답을 찾지 못하는 것 같습니다.
AH! 너의 맨 처음 문장은 내 머리 속의 전구를 클릭했다. 이제 알겠다! 회신 및 목록 이해 예제에 대해 감사드립니다. – jmleczko