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
그래서 나는 이것을해야합니다 :
a = [1, 2, 3, 4]
try:
b = a.index(6)
del a[b]
except:
pass
print(a)
그러나 이것을 수행하는 더 간단한 방법이 없습니까?
답변
목록에서 요소의 첫 항목을 제거하려면 list.remove
다음을 사용하십시오 .
>>> a = ['a', 'b', 'c', 'd']
>>> a.remove('b')
>>> print(a)
['a', 'c', 'd']
요소의 모든 항목을 제거하지는 않습니다. 이를 위해 목록 이해력을 사용하십시오.
>>> a = [10, 20, 30, 40, 20, 30, 40, 20, 70, 20]
>>> a = [x for x in a if x != 20]
>>> print(a)
[10, 30, 40, 30, 40, 70]
답변
일반적으로 파이썬은 할 수없는 일을하도록 지시하면 예외를 throw하므로 다음 중 하나를 수행해야합니다.
if c in a:
a.remove(c)
또는:
try:
a.remove(c)
except ValueError:
pass
예외는 예상하고 올바르게 처리하는 한 반드시 나쁜 것은 아닙니다.
답변
넌 할 수있어
a=[1,2,3,4]
if 6 in a:
a.remove(6)
그러나 위의 목록에서 6을 2 번 검색해야하므로 제외하는 것이 더 빠릅니다.
try:
a.remove(6)
except:
pass
답변
치다:
a = [1,2,2,3,4,5]
모든 발생을 없애기 위해 파이썬에서 필터 기능을 사용할 수 있습니다. 예를 들어 다음과 같습니다.
a = list(filter(lambda x: x!= 2, a))
따라서의 모든 요소를 유지합니다 a != 2
.
항목 중 하나를 꺼내려면
a.remove(2)
답변
다음은 목록 이해없이 수행하는 방법입니다.
def remove_all(seq, value):
pos = 0
for item in seq:
if item != value:
seq[pos] = item
pos += 1
del seq[pos:]
답변
삭제할 값을 알고 있다면 간단한 방법이 있습니다 (어쨌든 생각할 수있는 것처럼 간단합니다).
a = [0, 1, 1, 0, 1, 2, 1, 3, 1, 4]
while a.count(1) > 0:
a.remove(1)
당신은 얻을 것이다
[0, 0, 2, 3, 4]
답변
응용 프로그램에서 집합이 적용 가능한 경우 목록 대신 집합을 사용하는 것도 가능합니다.
데이터가 주문되지 않고 중복이 없으면 IE
my_set=set([3,4,2])
my_set.discard(1)
오류가 없습니다.
종종 목록은 실제로 정렬되지 않은 항목에 대한 편리한 컨테이너입니다. 목록에서 요소의 모든 발생을 제거하는 방법을 묻는 질문이 있습니다. 처음부터 속이기를 원하지 않으면 다시 한 번 세트가 편리합니다.
my_set.add(3)
위에서 my_set을 변경하지 않습니다.