그래서 목록이 있습니다.
s = ['cat','dog','cat','mouse','dog']
그리고 set () 함수를 사용하지 않고 목록을 반복하고 중복을 제거 할 수 있기를 원합니다! 따라서 예를 들어 'cat'과 위치 s [2]를 제거해야하지만 'cat'은 위치 s [0]에 유지해야합니다. 그런 다음 '개'에 대해 동일한 작업을 수행해야합니다. 위치 s [1]에 'dog'을 유지하고 위치 s [4]에서 'dog'을 제거합니다.
따라서 출력은 다음과 같습니다.
s = ['cat','dog','mouse']
i와 j를 목록의 인덱스 위치로 사용하고 i 위치의 요소가 j 위치의 요소와 같은지 확인했습니다. 그렇다면 그것을 제거하고 j의 값을 1 씩 증가시킵니다. 그렇지 않은 경우에는 그대로두고 j의 값을 증가시킵니다. 전체 목록이 반복 된 후 i의 값을 증가시킨 다음 새 요소에 대해 전체 목록을 다시 확인합니다. 이하:
i = 0
j = 1
for a in range(len(s)):
for b in range(len(s)):
if s[i] == s[j]:
s.remove(s[j])
j = j + 1
else:
j = j + 1
i = i + 1
내가 여기서 뭘 잘못하고 있니?
문제는 "자동"for 루프와 관련이 있습니다. 반복되는 루프를 수정할 때주의해야합니다. 적절한 해결책은 다음과 같습니다.
def remove_dup(a):
i = 0
while i < len(a):
j = i + 1
while j < len(a):
if a[i] == a[j]:
del a[j]
else:
j += 1
i += 1
s = ['cat','dog','cat','mouse','dog']
remove_dup(s)
print(s)
Output: ['cat', 'dog', 'mouse']
이 솔루션은 현재 위치에 있으며 새 어레이를 만드는 대신 원래 어레이를 수정합니다. 또한 추가 데이터 구조를 사용하지 않습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다