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

조회수 4732회

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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)