>>> a=[1,2,3]
>>> a.remove(2)
>>> a
[1, 3]
>>> a=[1,2,3]
>>> del a[1]
>>> a
[1, 3]
>>> a= [1,2,3]
>>> a.pop(1)
2
>>> a
[1, 3]
>>>
목록에서 요소를 제거하는 위의 세 가지 방법 사이에 차이점이 있습니까?
답변
예, 특정 색인이 아닌 첫 번째 일치하는 값을remove
제거합니다 .
>>> a = [0, 2, 3, 2]
>>> a.remove(2)
>>> a
[0, 3, 2]
del
특정 색인에서 항목을 제거합니다.
>>> a = [9, 8, 7, 6]
>>> del a[1]
>>> a
[9, 7, 6]
및 pop
특정 지수 및 반품이있는 항목을 제거합니다.
>>> a = [4, 3, 5]
>>> a.pop(1)
3
>>> a
[4, 5]
그들의 오류 모드도 다릅니다 :
>>> a = [4, 5, 6]
>>> a.remove(7)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>> del a[7]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> a.pop(7)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: pop index out of range
답변
사용 del
, 인덱스로 요소를 제거하기 위해 pop()
반환 된 값을 필요로하는 경우 인덱스를 제거하고, remove()
값으로 요소를 삭제합니다. 후자는 목록을 검색해야하며 목록에서 ValueError
이러한 값이 발생하지 않으면 발생합니다.
요소 i
목록에서 색인 을 삭제할 때 n
이러한 방법의 계산 복잡도는 다음과 같습니다.
del O(n - i)
pop O(n - i)
remove O(n)
답변
아무도 언급하지 않았으므로 del
(와 달리 pop
) 목록 슬라이싱으로 인해 다양한 인덱스를 제거 할 수 있습니다.
>>> lst = [3, 2, 2, 1]
>>> del lst[1:]
>>> lst
[3]
또한 IndexError
인덱스가 목록에없는 경우를 피할 수 있습니다 .
>>> lst = [3, 2, 2, 1]
>>> del lst[10:]
>>> lst
[3, 2, 2, 1]
답변
답변
많은 최고의 설명이 여기 있지만 더 단순화하기 위해 최선을 다할 것입니다.
이러한 모든 방법 중에서 reverse & pop은 postfix 이고 delete는 prefix 입니다.
remove () : 처음 나타나는 원소를 제거하는 데 사용
remove(i)
=> i 값의 첫 번째 발생
>>> a = [0, 2, 3, 2, 1, 4, 6, 5, 7]
>>> a.remove(2) # where i = 2
>>> a
[0, 3, 2, 1, 4, 6, 5, 7]
pop () : 다음과 같은 경우 요소를 제거하는 데 사용됩니다.
불특정
pop()
=> 목록 끝에서
>>>a.pop()
>>>a
[0, 3, 2, 1, 4, 6, 5]
지정된
pop(index)
인덱스의 =>
>>>a.pop(2)
>>>a
[0, 3, 1, 4, 6, 5]
경고 : 위험한 방법
delete () : 접두사 메서드입니다.
동일한 방법에 대해 두 가지 다른 구문 인 []와 ()를 주시하십시오. 그것은 다음과 같은 힘을 가지고 있습니다.
1. 인덱스 삭제
del a[index]
=> pop과 같이 인덱스와 관련 값을 삭제하는 데 사용됩니다.
>>>del a[1]
>>>a
[0, 1, 4, 6, 5]
2. [index 1 : index N] 범위의 값 삭제
del a[0:3]
=> 범위의 여러 값
>>>del a[0:3]
>>>a
[6, 5]
3. 마지막이지만 목록이 아닌 전체 목록을 한 번에 삭제
del (a)
=> 위에서 말했듯이.
>>>del (a)
>>>a
이것이 혼란을 명확히하기를 바랍니다.
답변
pop-인덱스를 가져 와서 Value를 돌려줍니다
remove-값을 취하고 첫 번째 발생을 제거하며 아무것도 리턴하지 않습니다.
delete-인덱스를 가져와 해당 인덱스에서 값을 제거하고 아무것도 반환하지 않습니다.
답변
다른 데이터 구조에 대한 모든 작업 / 기능은 특정 작업에 대해 정의됩니다. 귀하의 경우에는 요소를 제거하고 삭제하고 팝하고 제거하십시오. (세트를 고려하면 다른 작업 추가-삭제) 다른 혼란스러운 사례는 추가하는 동안입니다. 삽입 / 추가. 데모를 위해 deque를 구현하자. deque는 하이브리드 선형 데이터 구조로, 요소를 추가하거나 양쪽 끝에서 요소를 제거 할 수 있습니다.
class Deque(object):
def __init__(self):
self.items=[]
def addFront(self,item):
return self.items.insert(0,item)
def addRear(self,item):
return self.items.append(item)
def deleteFront(self):
return self.items.pop(0)
def deleteRear(self):
return self.items.pop()
def returnAll(self):
return self.items[:]
여기에서 작업을 참조하십시오.
def deleteFront(self):
return self.items.pop(0)
def deleteRear(self):
return self.items.pop()
작업은 무언가를 반환해야합니다. 그래서, pop-인덱스 유무. 값을 반환하지 않으려면 del self.items [0]
색인이 아닌 값으로 삭제 :
-
제거 :
list_ez=[1,2,3,4,5,6,7,8] for i in list_ez: if i%2==0: list_ez.remove(i) print list_ez
반환 값 [1,3,5,7]
세트의 경우를 고려하자.
set_ez=set_ez=set(range(10))
set_ez.remove(11)
# Gives Key Value Error.
##KeyError: 11
set_ez.discard(11)
# Does Not return any errors.