리스트의 원소를 지우려면 어떻게 해야 하나요?


없는 원소를 지우려고 하니 에러가 떠서(소스코드1) 존재하지 않는 원소를 지울 때에는 에러를 내지 않고 그냥 넘어가는 코드(소스코드2)를 만들었습니다. 제가 짠 것보다 더 쉬운 방법은 없을까요?

소스코드1

a=[1,2,3,4]
b=a.index(6)
del a[b]
print a

에러내용

Traceback (most recent call last):
  File "D:\zjm_code\a.py", line 6, in <module>
    b=a.index(6)
ValueError: list.index(x): x not in list

소스코드2

a=[1,2,3,4]
try:
    b=a.index(6)
    del a[b]
except:
    pass
print a
  • 2016년 01월 21일에 작성됨

조회수 143


1 답변


좋아요
0
싫어요
채택취소하기

우선, 리스트에서 가장 쉽게 특정 원소를 지우는 방법은 remove()를 쓰는 것입니다.

a = [1, 2, 3, 4, 2]
a.remove(2) # 2는 index값이 아니라 원소 값입니다
print a #[1, 3, 4, 2]

이제 질문하신 내용으로 넘어가면, remove()를 써서 에러를 무시하고 지나가는 코드는 다음과 같습니다.

if c in a:
    a.remove(c)

단, remove()는 첫 번째로 나오는 원소만을 지워줍니다. 리스트에서 특정 원소를 모두 지우고 싶다면 리스트 내장(comprehension)을 써주세요

a = [1, 2, 3, 4, 2, 3, 4, 2, 7, 2]
a = [x for x in a if x != 2]
print a # [1, 3, 4, 3, 4, 7]
  • 2016년 01월 21일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close