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

없는 원소를 지우려고 하니 에러가 떠서(소스코드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

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]
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.