Python 이 목록 을 옮 겨 다 닐 때 요 소 를 삭제 하 는 올 바른 방법
2365 단어 Python목록 옮 겨 다 니 기요소 삭제
이것 은 작업 중 에 만난 코드 입 니 다.원 리 는 아래 와 비슷 합 니 다.(특정한 요소 가 요구 에 부합 되 는 지 판단 하고 이 요 소 를 삭제 하 는 데 부합 되 지 않 으 며 마지막 으로 요구 에 부합 되 는 목록 을 얻 습 니 다)
a = [1,2,3,4,5,6,7,8]
for i in a:
if i>5:
pass
else:
a.remove(i)
print(a)
실행 결과:문제 분석
요 소 를 삭제 하면 전체 목록 의 요 소 는 앞으로 이동 하지만 i 는 처음부터 확인 되 었 고 계속 커지 기 때문에 원 하 는 결 과 를 얻 을 수 없습니다.
해결 방법
1.새 목록 을 옮 겨 다 니 며 작업 합 니 다.삭 제 는 원래 목록 에서 작업 합 니 다.
a = [1,2,3,4,5,6,7,8]
print(id(a))
print(id(a[:]))
for i in a[:]:
if i>5:
pass
else:
a.remove(i)
print(a)
print('-------------------------')
print(id(a))
실행 결과:2.filter
내장 함수 filter()공식 문서 참조:https://docs.python.org/3/library/functions.html#filter
a = [1,2,3,4,5,6,7,8]
b = filter(lambda x: x>5,a)
print(list(b))
실행 결과:3.리스트 분석
a = [1,2,3,4,5,6,7,8]
b = [i for i in a if i >5]
print(b)
실행 결과:4.거꾸로 삭제
목록 이 항상'앞으로 이동'하기 때문에 거꾸로 옮 겨 다 닐 수 있 습 니 다.뒤의 요소 가 수정 되 더 라 도 옮 겨 다 니 는 요소 와 좌 표 는 변 하지 않 습 니 다.
a = [1,2,3,4,5,6,7,8]
print(id(a))
for i in range(len(a)-1,-1,-1):
if a[i] > 5:
pass
else:
a.remove(a[i])
print(id(a))
print('--------------------')
print(a)
실행 결과:파 이 썬 이 목록 을 옮 겨 다 닐 때 요 소 를 삭제 하 는 올 바른 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 이 목록 을 옮 겨 다 니 며 요 소 를 삭제 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 을 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.