Я обычно использую del
в своем коде для удаления объектов:
>>> array = [4, 6, 7, 'hello', 8]
>>> del(array[array.index('hello')])
>>> array
[4, 6, 7, 8]
>>>
Но я слышал, что многие люди говорят, что использование del
является непитоническим. Использует del
плохую практику?
>>> array = [4, 6, 7, 'hello', 8]
>>> array[array.index('hello'):array.index('hello')+1] = ''
>>> array
[4, 6, 7, 8]
>>>
Если нет, то почему существует много способов выполнить одно и то же в python? Лучше других?
Вариант 1: использование del
>>> arr = [5, 7, 2, 3]
>>> del(arr[1])
>>> arr
[5, 2, 3]
>>>
Вариант 2: использование list.remove()
>>> arr = [5, 7, 2, 3]
>>> arr.remove(7)
>>> arr
[5, 2, 3]
>>>
Вариант 3: использование list.pop()
>>> arr = [5, 7, 2, 3]
>>> arr.pop(1)
7
>>> arr
[5, 2, 3]
>>>
Вариант 4: использование срезания
>>> arr = [5, 7, 2, 3]
>>> arr[1:2] = ''
>>> arr
[5, 2, 3]
>>>
Прошу прощения, если этот вопрос, похоже, основан на мнениях, но я ищу разумный ответ на мой вопрос, и я добавлю щедрость через 2 дня, если я не получу подходящего ответа.
Изменить:
Поскольку существует много альтернатив использованию del
для удаления определенных частей объектов, единственным уникальным фактором, оставшимся от del
, является его способность полностью удалять объекты:
>>> a = 'hello'
>>> b = a
>>> del(a)
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> b
'hello'
>>>
Однако, какой смысл использовать его для "undefine" объектов?
Кроме того, почему следующий код меняет обе переменные:
>>> a = []
>>> b = a
>>> a.append(9)
>>> a
[9]
>>> b
[9]
>>>
Но оператор del
не достигает такого же эффекта?
>>> a = []
>>> b = a
>>> del(a)
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> b
[]
>>>