46

In Python, how can I remove an object from array of objects? Like this:

x = object()
y = object()
array = [x,y]
# Remove x

I've tried array.remove() but it only works with a value, not a specific location in the array. I need to be able to delete the object by addressing its position(remove array[0])

Eric Leschinski
  • 135,913
  • 89
  • 401
  • 325
user1120190
  • 651
  • 2
  • 6
  • 6

7 Answers7

87

In python there are no arrays, lists are used instead. There are various ways to delete an object from a list:

my_list = [1,2,4,6,7]

del my_list[1] # Removes index 1 from the list
print my_list # [1,4,6,7]
my_list.remove(4) # Removes the integer 4 from the list, not the index 4
print my_list # [1,6,7]
my_list.pop(2) # Removes index 2 from the list

In your case the appropriate method to use is pop, because it takes the index to be removed:

x = object()
y = object()
array = [x, y]
array.pop(0)
# Using the del statement
del array[0]
Ricardo Murillo
  • 2,677
  • 1
  • 16
  • 12
  • 1
    You should update the second part of your answer and have him use .pop(0) since he specifically asks about removing by position. – redreinard Dec 15 '14 at 21:02
  • When using `del array[0]` is removed` from the list but `x` itself still exists. Is there a method to remove `x` simultaneously (for example by deleting `x` by its pointer)? – Sajjad Mar 13 '20 at 08:44
8
del array[0]

where 0 is the index of the object in the list (there is no array in python)

MattoTodd
  • 13,139
  • 15
  • 58
  • 76
6

If you want to remove multiple object from a list. There are various ways to delete an object from a list

Try this code. a is list with all object, b is list object you want to remove.

example :

a = [1,2,3,4,5,6]
b = [2,3]

for i in b:
   if i in a:
      a.remove(i)

print(a)

the output is [1,4,5,6] I hope, it will work for you

4

You could try this to dynamically remove an object from an array without looping through it? Where e and t are just random objects.

>>> e = {'b':1, 'w': 2}
>>> t = {'b':1, 'w': 3}
>>> p = [e,t]
>>> p
[{'b': 1, 'w': 2}, {'b': 1, 'w': 3}]
>>>
>>> p.pop(p.index({'b':1, 'w': 3}))
{'b': 1, 'w': 3}
>>> p
[{'b': 1, 'w': 2}]
>>>
BLang
  • 740
  • 2
  • 12
  • 31
2

You can remove a string from an array like this:

array = ["Bob", "Same"]
array.remove("Bob")
Lil.Yeeet
  • 39
  • 2
1

If you know the array location you can can pass it into itself. If you are removing multiple items I suggest you remove them in reverse order.

#Setup array
array = [55,126,555,2,36]
#Remove 55 which is in position 0
array.remove(array[0])
ZeroInputCtrl
  • 171
  • 1
  • 8
0

if you wanna remove the last one just do your_list.pop(-1) if you wanna remove the first one your_list.pop(0) or any index you wish to remove

AngelloMaggio
  • 474
  • 5
  • 16