0

0

Python中如何创建对象列表

PHPz

PHPz

发布时间:2023-04-25 08:04:43

|

1764人浏览过

|

来源于亿速云

转载

python 中要创建对象列表:

  • 声明一个新变量并将其初始化为一个空列表。

  • 使用 for 循环迭代范围对象。

  • 实例化一个类以在每次迭代时创建一个对象。

  • 将每个对象附加到列表中。

    立即学习Python免费学习笔记(深入)”;

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 中要创建对象列表:

Android 开发者指南 第一部分:入门
Android 开发者指南 第一部分:入门

Android文档-开发者指南-第一部分:入门-中英文对照版 Android提供了丰富的应用程序框架,它允许您在Java语言环境中构建移动设备的创新应用程序和游戏。在左侧导航中列出的文档提供了有关如何使用Android的各种API来构建应用程序的详细信息。第一部分:Introduction(入门) 0、Introduction to Android(引进到Android) 1、Application Fundamentals(应用程序基础) 2、Device Compatibility(设备兼容性) 3、

下载
  • 使用列表推导来迭代 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速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

192

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

17

2026.02.03

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

698

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

219

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1561

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

646

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

1148

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

1122

2024.04.29

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

1

2026.03.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 4.7万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号