Pythonでリスト内インスタンスを検索・削除する方法
8476 ワード
経緯
インスタンスが入った配列に対して、任意のインスタンスを検索したくなった時の備忘録として。
もっと効率のよいやり方をご存じの方はご教示ください。
概要
index検索からの削除
- 対象のlistからfilterで削除したいインスタンスを抽出
- list.index("対象のインスタンス")でindexを検索
- list.pop(index)で削除完了
# 適当なクラス
class Person:
def __init__(self,name,id) -> None:
self.name = name
self.id = id
def __repr__(self) -> str:
return self.name
# Personを入れる配列peopleを定義
people = []
# peopleへ適当なPersonオブジェクトを代入
people.append(Person('taro',1))
people.append(Person('jiro',2))
people.append(Person('hana',3))
print(people)
# [taro, jiro, hana]
# jiroを検索
jiro = list(filter(lambda x:x.id==2,people))[0]
jiro_idx = people.index(jiro)
# peopleからjiroを削除(インデックス指定)
people.pop(jiro_idx)
print(people)
# [taro,hana]
インスタンス指定での削除
- 対象のlistからfilterで削除したいインスタンスを抽出
- list.remove("対象のインスタンス")で削除完了
# 適当なクラス
class Person:
def __init__(self,name,id) -> None:
self.name = name
self.id = id
def __repr__(self) -> str:
return self.name
# Personを入れる配列peopleを定義
people = []
# peopleへ適当なPersonオブジェクトを代入
people.append(Person('taro',1))
people.append(Person('jiro',2))
people.append(Person('hana',3))
print(people)
# [taro, jiro, hana]
# taroを検索
taro = list(filter(lambda x:x.name=='taro',people))[0]
# peopleからtaroを削除(インスタンス指定)
people.remove(taro)
print(people)
# [jiro, hana]
Author And Source
この問題について(Pythonでリスト内インスタンスを検索・削除する方法), 我々は、より多くの情報をここで見つけました https://zenn.dev/korokoro/articles/8fd133be683440著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol