python基础(三)——函数

一、三元运算(三目运算)

简单的条件语句

if 条件成立:
    a = 1
else:
    a = 2

改成三元运算:

a = 1 if 条件成立 else 2

列表解析

list_eggs = []

for i in range(10):
    list_eggs.append('鸡蛋%s' % i)
print(list_eggs)

改成三元

list_eggs = ['鸡蛋%s' % i for i in range(10)]
print(l)

生成器表达式

laomuji = ('鸡蛋' % i for i in range(10)) #生成器表达式
print(laomuji) #迭代器对象
print(laomuji.__next__()) # 下蛋咯
print(next(laomuji))    #本质调用 __next__()

总结:

1.把列表解析的[]换成()得到的就是声称其表达式

2.列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存

迭代器协议:是指对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个,StopIteration

生成器

(1)语法上与函数类似,生成器函数和常规函数几乎是一样的,都是使用def语句进行定义,差别在于,生成器使用yield语句返回一个值,而常规函数使用return返回一个值

(2)自动实现迭代器协议,对于生成器,python会自动实现迭代器协议,所以可以调用next()方法,并且在没有值返回时,生成器自动产生Stopiteration异常,以终止迭代。

(3)状态挂起,生成器使用yield语句返回一个值,yield语句挂起该生成器函数的状态,保留足够的信息,以便之后它离开的地方继续执行。

(4)优点:生成器的好处是延迟计算,一次返回一个结果,不会一次生成所有的结果,这对于大数据处理,非常有用;

列表解析
sum([i for i in range(100000000000000)])#内存占用大,机器容易卡死

#生成器表达式
sum(i for i in range(100000000))#几乎不占内存

还能有效提高代码的可读性。

#不使用生成器
def func():
    ret = []
    for i in range(100):
        ret.append('user%s' % i)
    return ret

#使用生成器
def func():
    for i in range(100):
       yield 'user%s' % i

注:生成器只能遍历一次

例子  获取城市人口占总人口百分比

人口信息.txt文件内容
{'name': '北京','population': 100000000}
{'name': '上海','population': 10000000}
{'name': '天津','populati
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值