簡體   English   中英

Python,從列表中刪除對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM