首頁 > 後端開發 > Python教學 > Python如何建立物件列表

Python如何建立物件列表

PHPz
發布: 2023-04-25 08:04:43
轉載
1565 人瀏覽過

Python 中要建立物件清單:

  • 宣告一個新變數並將其初始化為一個空列表。

  • 使用 for 迴圈迭代範圍物件。

  • 實例化一個類別以在每次迭代時建立一個物件。

  • 將每個物件附加到清單中。

class Employee():
    def __init__(self, id):
        self.id = id


list_of_objects = []

for i in range(5):
    list_of_objects.append(Employee(i))

print(list_of_objects)

for obj in list_of_objects:
    print(obj.id)  # ????️ 0, 1, 2, 3, 4
登入後複製

我們使用 range() 類別來取得可以迭代的範圍物件。

range 類別通常用於在 for 迴圈中循環特定次數。

print(list(range(5)))  # ????️ [0, 1, 2, 3, 4]
print(list(range(1, 6)))  # ????️ [1, 2, 3, 4, 5]
登入後複製

如果我們需要從特定數字開始,請將 2 個參數(開始和停止)傳遞給 range() 類別。

在每次迭代中,我們使用目前數字建立 Employee 類別的實例並將結果附加到列表中。

list.append() 方法將一個項目加入到清單的末尾。

可以使用單一 id 參數實例化 Employee 類,但根據您的用例,您在建立物件時可能必須傳遞更多參數。

如果我們需要更改清單中物件的 print() 函數的輸出,請在類別中定義 __repr__() 方法。

class Employee():
    def __init__(self, id):
        self.id = id

    def __repr__(self):
        return str(self.id)


list_of_objects = []

for i in range(5):
    list_of_objects.append(Employee(i))

# ????️ [0, 1, 2, 3, 4]
print(list_of_objects)
登入後複製

我們使用每個物件的 id 作為 print() 函數的輸出。

請注意 ,__repr__() 方法必須傳回一個字串。

如果我們的類別沒有在其 __init__() 方法中定義所有必要的屬性,請使用 setattr() 函數為每個物件新增屬性。

class Employee():
    def __init__(self, id):
        self.id = id

    def __repr__(self):
        return str(self.id)


list_of_objects = []

for i in range(3):
    obj = Employee(i)

    setattr(obj, 'topic', 'Python')
    setattr(obj, 'salary', 100)

    list_of_objects.append(obj)

# ????️ [0, 1, 2]
print(list_of_objects)

for obj in list_of_objects:
    print(getattr(obj, 'topic'))
    print(getattr(obj, 'salary'))
登入後複製

setattr 函數會為物件新增屬性。

此函數採用以下3 個參數:

  • object 新增屬性的物件

  • name 屬性的名稱

  • value 屬性的值

名稱字串可以是現有的或新的屬性。

getattr 函數傳回物件提供的屬性的值。

此函數將物件、屬性名稱和物件上不存在該屬性時的預設值作為參數。

或者,我們可以使用列表推導。

使用列表理解建立物件清單

Python 中要建立物件清單:

  • 使用清單推導來迭代 range 物件。

  • 在每次迭代中,實例化一個類別以建立一個物件。

  • 新清單將包含所有新建立的物件。

class Employee():
    def __init__(self, id):
        self.id = id

    def __repr__(self):
        return str(self.id)


list_of_objects = [
    Employee(i) for i in range(1, 6)
]

print(list_of_objects)  # ????️ [1, 2, 3, 4, 5]

for obj in list_of_objects:
    print(obj.id)  # 1, 2, 3, 4, 5
登入後複製

我們使用列表推導來迭代長度為 5 的範圍物件。

清單推導用於對每個元素執行某些操作或選擇滿足條件的元素子集。

在每次迭代中,我們實例化 Employee 類別以建立一個物件並傳回結果。

新清單包含所有新建立的物件。

選擇哪一種方法是個人喜好的問題。

清單推導非常直接且易於閱讀,但如果您需要在每個物件中新增額外的屬性或建立流程更加複雜,則必須使用 for 迴圈。

在 Python 中將項目附加到類別中的列表

將項目附加到類別中的列表:

在類別的 __init__() 方法中初始化列表。

定義一個方法,它接受一個或多個項目並將它們附加到清單中。

class Employee():

    def __init__(self, name, salary):
        self.name = name
        self.salary = salary
        self.tasks = []  # ????️ initialize list

    def add_task(self, task):
        self.tasks.append(task)

        return self.tasks


bob = Employee('Jiyik', 100)

bob.add_task('develop')
bob.add_task('ship')

print(bob.tasks)  # ????️ ['develop', 'ship']
登入後複製

我們在類別的 __init__() 方法中將任務清單初始化為實例變數。

實例變數對於我們透過實例化類別所建立的每個實例都是唯一的。

class Employee():

    def __init__(self, name, salary):
        self.name = name
        self.salary = salary
        self.tasks = []  # ????️ initialize list

    def add_task(self, task):
        self.tasks.append(task)

        return self.tasks


alice = Employee('Fql', 1000)
alice.add_task('design')
alice.add_task('test')
print(alice.tasks)  # ????️ ['design', 'test']

bob = Employee('Jiyik', 100)
bob.add_task('develop')
bob.add_task('ship')
print(bob.tasks)  # ????️ ['develop', 'ship']
登入後複製

這兩個實例有單獨的任務清單。

我們也可以使用類別變數而不是實例變數。

類別變數由類別的所有實例共用。

class Employee():
    # ????️ class variable
    tasks = []

    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

    @classmethod
    def add_task(cls, task):
        cls.tasks.append(task)

        return cls.tasks


Employee.add_task('develop')
Employee.add_task('ship')

print(Employee.tasks)  # ????️ ['develop', 'ship']

alice = Employee('Fql', 1000)
print(alice.tasks)  # ????️ ['develop', 'ship']

bob = Employee('Jiyik', 100)
print(bob.tasks)  # ????️ ['develop', 'ship']
登入後複製

tasks 變數是一個類別變數,所以它被所有實例共用。

我們將 add_task() 方法標記為類別方法。傳遞的第一個參數類別方法是類別。

list.append() 方法將一個項目加入到清單的末端。

但是,我們可能經常需要做的事情是將多個項目附加到清單中。

我們可以使用 list.extend() 方法將可迭代物件的項目附加到列表中。

class Employee():

    def __init__(self, name, salary):
        # ????️ 实例变量(每个实例都是唯一的)
        self.name = name
        self.salary = salary
        self.tasks = []  # ????️ 初始化列表

    def add_tasks(self, iterable_of_tasks):
        self.tasks.extend(iterable_of_tasks)

        return self.tasks


bob = Employee('Jiyik', 100)

bob.add_tasks(['develop', 'test', 'ship'])

print(bob.tasks)  # ????️ ['develop', 'test', 'ship']
登入後複製

我們使用 list.extend() 方法將多個值附加到任務清單。

list.extend 方法採用可迭代物件(例如列表或元組)並透過附加可迭代物件中的所有項目來擴充列表。

以上是Python如何建立物件列表的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板