[英]Python, remove object from List
我仍在學習Python,但遇到了問題。 如果我的問題不清楚,請保持友好!
使用列表時,如果只有一個對象匹配,我是否可以從列表中刪除一個對象
因此,例如:
driver.addDriver(Driver("Ben", "BBB"))
driver.removeDriver("Ben", "123")
我是否可以刪除駕駛員名稱並打印為“無”,同時仍然顯示車輛編號。 謝謝。
class Driver:
def __init__(self, name, vehNo):
self._name = name
self._vehNo = vehNo
@property
def name(self):
return self._name
@property
def vehNo(self):
return self._vehNo
@vehNo.setter
def vehNo(self, newVehNo):
self._vehNo = newVehNo
def __str__(self):
return 'Driver Name: {} Vehicle Number: {}'.format(self._name, self._vehNo)
class TransportServices:
def __init__(self):
self._drivers = []
def searchDriver(self, name = None, vehNo = None):
for d in self._drivers:
if d.name == name and d.vehNo == vehNo:
return d
return None
#############################################################################
def addDriver(self, driver):
d = self.searchDriver(driver.name)
if d is None:
self._drivers.append(driver)
return True
else:
return False
#############################################################################
def removeDriver(self, name = None, vehNo = None):
d = self.searchDriver(name, vehNo)
if d is None:
return False
else:
self._drivers.remove(d)
#############################################################################
def __str__(self):
drivers = [str(d) for d in self._drivers]
return "{} ".format('\n'.join(drivers))
def main():
driver = TransportServices()
driver.addDriver(Driver("Alan", "AAA"))
driver.addDriver(Driver("Ben", "BBB"))
driver.removeDriver("Ben", "123")
print(driver)
main()
基本上,您要尋找的不是刪除對象而是更新對象。
您可以如下更新相應的對象:
for driver in self.drivers:
if driver.name == 'Bob': # or driver vehNo == 'BBB'
driver.name = None
同樣對於您的情況,您寧願使用與Java中的哈希映射相同的字典。
您可以執行以下操作:
self.drivers = {}
self.driver ['vehicle Num'] = theDriverObject
這樣,當您需要訪問或更新時,可以立即執行操作,即O(1),而無需遍歷所有驅動程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.