ホームページ > バックエンド開発 > Python チュートリアル > Python でオブジェクトのリストを作成する方法

Python でオブジェクトのリストを作成する方法

PHPz
リリース: 2023-04-25 08:04:43
転載
1572 人が閲覧しました

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 オブジェクトを取得します。

range クラスは通常、for ループで特定の回数ループするために使用されます。

print(list(range(5)))  # ????️ [0, 1, 2, 3, 4]
print(list(range(1, 6)))  # ????️ [1, 2, 3, 4, 5]
ログイン後にコピー

特定の番号から開始する必要がある場合は、2 つのパラメーター (start と stop) を range() クラスに渡します。

各反復で、現在の番号を使用して Employee クラスのインスタンスを作成し、結果をリストに追加します。

list.append() メソッドは、リストの末尾に項目を追加します。

Employee クラスは 1 つの id パラメーターでインスタンス化できますが、ユースケースによっては、オブジェクトの作成時にさらに多くのパラメーターを渡す必要がある場合があります。

リスト内のオブジェクトの 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 でオブジェクトのリストを作成するには:

  • リスト内包表記を使用して、範囲オブジェクトを反復処理します。

  • 各反復で、クラスをインスタンス化してオブジェクトを作成します。

  • 新しいリストには、新しく作成されたすべてのオブジェクトが含まれます。

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__() メソッドでリストを初期化します。

1 つ以上の項目を受け入れ、それらをリストに追加するメソッドを定義します。

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']
ログイン後にコピー

2 つのインスタンスには別々のタスク リストがあります。

インスタンス変数の代わりにクラス変数を使用することもできます。

クラス変数は、クラスのすべてのインスタンスによって共有されます。

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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート