溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中如何創(chuàng)建對象列表

發(fā)布時間:2023-03-14 10:30:25 來源:億速云 閱讀:147 作者:iii 欄目:開發(fā)技術

這篇文章主要講解了“Python中如何創(chuàng)建對象列表”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python中如何創(chuàng)建對象列表”吧!

Python 中要創(chuàng)建對象列表:

  • 聲明一個新變量并將其初始化為一個空列表。

  • 使用 for 循環(huán)迭代范圍對象。

  • 實例化一個類以在每次迭代時創(chuàng)建一個對象。

  • 將每個對象附加到列表中。

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 循環(huán)中循環(huán)特定次數(shù)。

print(list(range(5)))  # ????? [0, 1, 2, 3, 4]
print(list(range(1, 6)))  # ????? [1, 2, 3, 4, 5]

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

在每次迭代中,我們使用當前數(shù)字創(chuàng)建 Employee 類的實例并將結果附加到列表中。

list.append() 方法將一個項目添加到列表的末尾。

可以使用單個 id 參數(shù)實例化 Employee 類,但根據(jù)您的用例,您在創(chuàng)建對象時可能必須傳遞更多參數(shù)。

如果我們需要更改列表中對象的 print() 函數(shù)的輸出,請在類中定義 __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() 函數(shù)的輸出。

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

如果我們的類沒有在其 __init__() 方法中定義所有必要的屬性,請使用 setattr() 函數(shù)為每個對象添加屬性。

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 函數(shù)向對象添加屬性。

該函數(shù)采用以下 3 個參數(shù):

  • object 添加屬性的對象

  • name 屬性的名稱

  • value 屬性的值

名稱字符串可以是現(xiàn)有的或新的屬性。

getattr 函數(shù)返回對象提供的屬性的值。

該函數(shù)將對象、屬性名稱和對象上不存在該屬性時的默認值作為參數(shù)。

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

使用列表理解創(chuàng)建對象列表

Python 中要創(chuàng)建對象列表:

  • 使用列表推導來迭代 range 對象。

  • 在每次迭代中,實例化一個類以創(chuàng)建一個對象。

  • 新列表將包含所有新創(chuàng)建的對象。

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 的范圍對象。

列表推導用于對每個元素執(zhí)行某些操作或選擇滿足條件的元素子集。

在每次迭代中,我們實例化 Employee 類以創(chuàng)建一個對象并返回結果。

新列表包含所有新創(chuàng)建的對象。

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

列表推導非常直接且易于閱讀,但如果您需要向每個對象添加額外的屬性或者創(chuàng)建過程更加復雜,則必須使用 for 循環(huán)。

在 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__() 方法中將任務列表初始化為實例變量。

實例變量對于我們通過實例化類創(chuàng)建的每個實例都是唯一的。

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() 方法標記為類方法。 傳遞的第一個參數(shù)類方法是類。

list.append() 方法將一個項目添加到列表的末尾。

但是,我們可能經(jīng)常需要做的事情是將多個項目附加到列表中。

我們可以使用 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中如何創(chuàng)建對象列表”的內容了,經(jīng)過本文的學習后,相信大家對Python中如何創(chuàng)建對象列表這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI