web-dev-qa-db-ja.com

pythonのオブジェクトのリストからオブジェクトを削除します

Pythonでは、オブジェクトの配列からオブジェクトを削除するにはどうすればよいですか?このような:

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

array.remove()を試しましたが、値でのみ機能し、配列内の特定の場所では機能しません。オブジェクトの位置を指定してオブジェクトを削除できるようにする必要があります(remove array[0]

39
user1120190

pythonには配列はなく、代わりにリストが使用されます。リストからオブジェクトを削除するには、さまざまな方法があります。

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

あなたの場合、使用する適切なメソッドはポップです。これは、インデックスを削除する必要があるためです。

x = object()
y = object()
array = [x, y]
array.pop(0)
# Using the del statement
del array[0]
75
Ricardo Murillo
del array[0]

0list のオブジェクトのインデックスです(Pythonには配列はありません)

6
MattoTodd

リストから複数のオブジェクトを削除する場合。リストからオブジェクトを削除するにはさまざまな方法があります

このコードを試してください。 aはすべてのオブジェクトのリスト、bは削除するリストオブジェクトです。

例:

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

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

print(a)

出力は[1,4,5,6]です

配列の場所がわかっている場合は、配列の場所を渡すことができます。複数のアイテムを削除する場合は、逆の順序で削除することをお勧めします。

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

これを試して、ループせずにオブジェクトを配列から動的に削除できますか?ここで、eとtは単なるランダムオブジェクトです。

>>> 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}]
>>>
1
BLang