리스트의 원소를 지우려면 어떻게 해야 하나요?
조회수 4734회
없는 원소를 지우려고 하니 에러가 떠서(소스코드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 답변
-
우선, 리스트에서 가장 쉽게 특정 원소를 지우는 방법은 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]
댓글 입력