Python基础教程第二版 9:魔法方法,属性,迭代器(未完)

简介: python基础教程第二版 9 :魔法方法,属性,迭代器 新类与旧类 构造方法:对象被创建后立即执行的方法 __init__     class 类名:         def __init__(self):             self.
python基础教程第二版 9 :魔法方法,属性,迭代器
新类与旧类


构造方法:对象被创建后立即执行的方法 __init__
    class 类名:
        def __init__(self):
            self.属性=值
每个类都可以有多个超类,它们从超类那里继承方法.










9.7 生成器
生成器是一种用普通的函数语法定义的迭代器.
任何包含yield的函数都是生成器.每次使用yield产生一个值,函数就会被冻结:即函数停在那个点等待被激活.
yield语句意味着生成一个值,return语句意味着要停止执行(也只有在生成器中可以不加参数调用.)
生成器包括2部分:生成器的函数和生成器的迭代器.
    函数是def定义的部分,迭代器是函数返回的部分.
        迭代器可以执行迭代操作.
        


def func(list):
    for sublist in list:
        for i in sublist:
            yield i
A=[[1,2],[3,4],[5]]
print(func(A))
for a in func(A):
    print a
print(list(func(A)))
结果

1
2
3
4
5
[1, 2, 3, 4, 5]


def func(list):
    for sublist in list:
#        for i in sublist:
#            yield i
        yield sublist
A=[[1,2],[3,4],[5]]
print(func(A))
for a in func(A):
    print a
print(list(func(A)))
结果

[1, 2]
[3, 4]
[5]
[[1, 2], [3, 4], [5]]




def func(list):
    for sublist in list:
        for i in func(sublist):#取出的元素类型不一定是列表,所以要处理异常
            yield i
A=[[1,2],[3,4],[5,[6,7]]]
print(func(A))
for a in func(A):
    print a
print(list(func(A)))
结果

Traceback (most recent call last):
  File "/home/talen/PycharmProjects/untitled/test.py", line 7, in
    for a in func(A):
  File "/home/talen/PycharmProjects/untitled/test.py", line 3, in func
    for i in func(sublist):
  File "/home/talen/PycharmProjects/untitled/test.py", line 3, in func
    for i in func(sublist):
  File "/home/talen/PycharmProjects/untitled/test.py", line 2, in func
    for sublist in list:
TypeError: 'int' object is not iterable




def func(list):
    try:
        for sublist in list:
            for i in func(sublist):
                yield i
    except TypeError:
        yield list
A=[[1,2],[3,4],[5,[6,7]],8]
print(list(func(A)))
结果
[1, 2, 3, 4, 5, 6, 7, 8]


#字符串被看成原子值,不应该被迭代
def func(list):
    try:
        try:
            list+''
        except TypeError:pass
        else:
            raise TypeError
        for sublist in list:
            for i in func(sublist):
                yield i
    except TypeError:
        yield list
A=[[1,2],[3,4],[5,[6,7]],8,'abc']
print(list(func(A)))
结果:
[1, 2, 3, 4, 5, 6, 7, 8, 'abc']
目录
相关文章
|
9月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
502 2
|
9月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
675 0
|
10月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
633 1
|
10月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
1570 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
10月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
1113 19
|
9月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
464 1
|
10月前
|
存储 大数据 Unix
Python生成器 vs 迭代器:从内存到代码的深度解析
在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
467 2
|
10月前
|
算法 调度 决策智能
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
301 0
|
10月前
|
数据采集 存储 JSON
使用Python获取1688商品详情的教程
本教程介绍如何使用Python爬取1688商品详情信息,涵盖环境配置、代码编写、数据处理及合法合规注意事项,助你快速掌握商品数据抓取与保存技巧。
|
10月前
|
大数据 数据处理 数据安全/隐私保护
Python3 迭代器与生成器详解:从入门到实践
简介:本文深入解析Python中处理数据序列的利器——迭代器与生成器。通过通俗语言与实战案例,讲解其核心原理、自定义实现及大数据处理中的高效应用。
491 0

推荐镜像

更多