python基础班第十一课

python基础班第十一课

列表推导式

生成器

迭代器

对象的简介

类的简介

类的使用

上次作业详解

复习

列表推导式

在这里插入图片描述

# 推导式 列表推导式
# 用简单代码创建一个新列表
# [表达式 for 变量 in 旧列表]
# [表达式 for 变量 in 旧列表 if 条件]

lst1 =['cheney','tony','jerry','amy','juran']
def fun():
    new_lst =[]
    for name in lst1:
        if len(name) >3:
            new_lst.append(name)
    return new_lst


print(fun())
lst2 =[name+'新年好' for name in lst1 if len(name) >3]
print(lst2)

在这里插入图片描述

# 求1-100能被3整除的数 range右边取不到
lst3 =[i for i in range(2, 100) if i % 3 == 0]
print(lst3)
lst4 =[i for i in range(2, 100) if i % 3 == 0 and i % 6 == 0]
print(lst4)

在这里插入图片描述

生成器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# 生成器 按顺序取数据!! 生成器一旦被创建成功,超过值就会报错
# 生成器创建
# 方式一 通过推导式的方式生成
# lst1 =[x * 3 for x in range(1, 11)]
# 将推导式的[]变成小括号()
lst1 =(x * 3 for x in range(1, 11))
# <generator object <genexpr> at 0x000001B78E8768E0>
print(lst1,type(lst1))
print(lst1.__next__()) #生成器方式
print(next(lst1)) #或者这种

在这里插入图片描述
在这里插入图片描述

def fun():
    i =0
    while True:
        i +=1
        return i #return作用之一:结束函数
r =fun()
print(r)

在这里插入图片描述

def fun():
    i =0
    while True:
        i +=1
        # return i #return作用之一:结束函数
        yield i ###常用!!!yield!!!!
r =fun()
print(r)

在这里插入图片描述

# 函数方式
def fun():
    i =0
    while True:
        i +=1
        # return i #return作用之一:结束函数 return后就不执行了
        yield i #暂时堵塞程序
r =fun()
print(next(r))
print(next(r))

在这里插入图片描述

#生成器特征 生成一个生成器 一旦数据取完了,数据就不存在了 
def fun():
    for i in range(10):
        yield i #在这里生成了一个生成器


r = fun()
print(r) ##调用了fun()
lst1 =[i for i in r]
lst2 =[i for i in r]#因为lst2没有了next所以是空集
print(lst1)
print(lst2)

在这里插入图片描述

迭代器

在这里插入图片描述
在这里插入图片描述

# 可迭代对象
# 迭代器
lst1 =[1,2,3,4,5]
diedaiqi =iter(lst1)
print(type(diedaiqi),diedaiqi)
lst2 =[i for i in diedaiqi] #推导式生成器
print(lst2)

在这里插入图片描述

# 可迭代对象实现了_iter_()方法的对象,而迭代器则实现了_iter_()和_next_的方法
# iter是自身self,而迭代器next是传值取下一个
# 迭代器
lst1 =[1,2,3,4,5]
diedaiqi =iter(lst1)
print(type(diedaiqi),diedaiqi)
# lst2 =[i for i in diedaiqi]
# print(lst2)
# 或者
print(next(diedaiqi))#next()生成器调用
print(next(diedaiqi))
print(next(diedaiqi))

在这里插入图片描述

对象的简介

在这里插入图片描述
在这里插入图片描述

# 面向对象 所有操作都是通过对象来进行的
# 不注重过程,关注对象 拿功能过来用
# 面向过程关注的是每一个过程每一个细节
# 面向对象关注的是这个事情的结果

类的简介

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# 类 class
# 类的简介
# 类(图纸) 对象(按图纸造出来的车)
str()#str() 类一般没有功能,有功能的是对象
print('abc'.split('b'))
# a ='abc'
# # print(type(a))


class MyClass():
    pass
print(MyClass)

在这里插入图片描述

# MyClass是类的名称
# MyClass()是类的实例化 也是对象
# 一个类可以有很多对象
class MyClass():
    pass
# print(MyClass)
mc =MyClass #没有()就是类
print(mc,type(mc))

在这里插入图片描述

# isinstance 检测一个对象是不是这个类的对象
r =isinstance(mc,MyClass)
print(r)

在这里插入图片描述

class MyClass():
    pass
# print(MyClass)
mc =MyClass() # 创建对象也称呼为累的实例化
print(mc,type(mc))

# isinstance 检测一个对象是不是这个类的对象
r =isinstance(mc,MyClass)
print(r)

在这里插入图片描述

类的使用

class MyClass(): #创建一个类
    pass
print(id(MyClass),type(MyClass))


class Person(): ## 创建又一个类
    name ='liuyifei' # 数据 在类里面称呼为(属性 )给类加属性
    def speak(w):# 能做什么事情 行为(方法) 类下面的一个方法
        print('changgehaoting')

## 两个对象


p1 = Person()
p2 = Person()
# 这是给实例对象添加属性的方式
p1.name = 'zhouhuimin'  # p1添加了一个值 给实例对象添加属性的方式
print(p1.name)
print(p2.name) #类有属性就出现类的属性,类没有属性就报错
p1.speak() # 方法的使用 调用了类里面的方法

在这里插入图片描述

上次作业详解

import time
def get_time(fun):
    def inner():
        begin = time.time()
        fun() #加个位置给后面的@调用上来
        end =time.time()
        print(end - begin)
    return inner


@get_time
def fun1():
    for i in range(10000000):
        pass
fun1()

复习

# 复习
# 推导式 语法 [表达式 for 变量 in 列表 if 表达式]
# 生成器generator 方式一:推导式由[]变()(表达式 for 变量 in 列表 if 表达式)
# 生成器generator 方式二
# def fun():
#     i =0
#     while True:
#         i +=1
#         yield i
#
# r =fun()
# print(next(r))
# 迭代器
# list1 =[1,2,3]
# diedaiqi =iter(list1)
# print(next(diedaiqi))
# 注意:迭代器会在上次的位置停留 迭代器一旦数据取完,那么你继续用next()来取数据会直接报错
# 迭代器数据只能取一次,取完一次迭代器就不能继续用了
# 面向对象
# 类的创建和实例对象的生成
class Person():
    name ='tony' #属性
    def speak(self): #类的里面的方法
        print('hahahaha')

p1 =Person() #创建实例对象
p1.name ='jerry' #给实例对象添加属性
p2 =Person()
p2.speak() #实例对象调用类中的方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值