Python For循环赋值:两种常见写法对比与解析

咖啡半糖
咖啡半糖
发布时间:2026-10-15| 2人浏览过
原创

本文探讨Python中从对象列表提取属性值的两种常见写法。通过对比普通For循环与列表推导式,分析两者在时间复杂度O(n)上的一致性,并指出在需要额外判断逻辑时普通循环的适用性,帮助开发者根据场景选择更合适的代码实现方式。

背景

随着代码量的增加,功能需求往往也随之增多,这容易导致代码中冗余部分堆积。

面对这种情况,许多开发者会感到困扰,寻求更高效的解决方案成为必要。

通常,高级的编码实践倾向于使用更简洁的代码表达。

此外,将重复逻辑封装为函数,通过直接调用函数来复用代码,是常见的优化手段。

For循环赋值

假设已定义一个road类,包含若干属性。首先初始化road对象并赋值,随后将这些对象存入roadObjList集合中。

目标是遍历roadObjList集合,提取每个road对象的objectid值,并将结果存入一个新的列表中。


class road():
    def __init__(self,gid,objectid,name,width,direction,speed,type,snode,enode,length,startX,startY,endX,endY):
        self.gid= gid
        self.objectid = objectid
        self.name = name
        self.width = width
        self.direction = direction
        self.speed = speed
        self.type = type
        self.snode = snode
        self.enode = enode
        self.length =  length
        self.startX = startX
        self.startY = startY
        self.endX = endX
        self.endY = endY

写法一:


        objList = []
        for r in roadObjList:
            objList.append(r.objectid)

写法二:


objList = [r.objectid for r in roadObjList]

补充说明

关于For循环遍历的实现方式还有多种,尽管部分写法看似基础,但实际效果相近。

写法一:


 for i,ele in enumerate(roadPointObjList):
    print(i)
    print(ele)

写法二:


for i in range(0, len(roadPointObjList)):
    print(i)
    print(roadPointObjList[i])

总结

从时间复杂度来看,两种写法均为O(n),因为都需要遍历整个For循环。

第二种写法更为简洁,一步到位;但如果需要在循环内部进行条件判断,则第一种写法更为合适。

以上为个人经验分享,旨在提供参考,欢迎支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。