美文网首页
Python三元表达式-列表解析-生成器表达式

Python三元表达式-列表解析-生成器表达式

作者: 断尾壁虎V | 来源:发表于2017-11-28 19:11 被阅读0次

三元表达式

三元表达式是if...else的简写版本:

x=1
y=2
res=x if x>y else y   # 三元表达式,True则返回左边的值,False则返回右边的值
print(res)

列表解析

列表解析用于快速生成列表,可以简洁代码:

l=[i for i in range(10)]
print(l)

l=['book%s' %i for i in range(10) if i>5 if i<7]
print(l)

对旧的列表做计算处理,如计算平方:

l=[1, 2, 3, 4, 5]
l2=[items**2 for items in l if items**2 <16]
print(l2)

对列表的值做过滤:

l=['book1','book2','book3','pc','iphone']
l2=[i for i in l if i.startswith('book')]
print(l2)

生成器表达式

生成器表达式主要用于生成一个迭代器,如:

l=['book1','book2','book3','pc','iphone']
l2=(i for i in l if i.startswith('book'))
print(next(l2))
print(next(l2))
print(next(l2))

将列表的中括号[]改为圆括号()就是一个生成器表达式。这主要用于处理大文件和无穷列表问题。
如对文件内容进行遍历,查找出最长的一行的长度:

with open('a.txt',encoding='utf-8') as f:
    g=max(len(i) for i in f)   # max函数内置next方法,可以遍历迭代器中值,有多层圆括号时,迭代生成器的括号可以省略
    print(g)

可以直接计算列表和生成器的值:

print(sum([1,2,3]))      # 对列表值求和
print(sum(i for i in range(4)))     # 对生成器求和

如对文件中相关数据进行求和操作:
文件a.txt的内容为:

a  100   5
b  20     100
c  5000  2
d  10000  3

如果第二列为单价,第三列为数量,求总金额:

with open('a.txt',encoding='utf-8') as f:
    g=(float(i.split()[1])*int(i.split()[2]) for i in f)
    print(sum(g))

同样是上面的文本内容,可以进行格式化,并完成筛选操作:

with open('a.txt',encoding='utf-8') as f:
    g=[{'name':i.split()[0],'price':float(i.split()[1]),'count':int(i.split()[2])} for i in f if float(i.split()[1]) > 1000]
    print(g)

输出结果:
[{'name': 'c', 'price': 5000.0, 'count': 2}, {'name': 'd', 'price': 10000.0, 'count': 3}]

相关文章

  • Python 各种推导式

    python 列表推导式 执行结果 生成器表达式 1 把列表解析的[]换成()得到的就是生成器表达式 2 列表解析...

  • Python三元表达式-列表解析-生成器表达式

    三元表达式 三元表达式是if...else的简写版本: 列表解析 列表解析用于快速生成列表,可以简洁代码: 对旧的...

  • python笔记(

    常用 提高python编码效率 赋值 列表推导式 列表解析表达式,类似[i*2 for i in list] 三元...

  • 2 python基础

    列表解析:[表达式 for …in… 条件]用于数据量较少 生成器表达式:(表达式 for …in… 条件 )用于...

  • python 生成器详述

    参考python核心变成第二版 列表解析 在介绍生成器表达式之前,先来介绍一下列表解析 列表解析(List com...

  • Python编程学习笔记1.1

    《Python编程》学习笔记1.1 本篇承接上文,介绍列表解析、生成器表达式和map的使用,这些都是python中...

  • 三元表达式,列表推导式,生成器表达式

    三元表达式 列表推导式 生成器表达式 匿名函数 有名字的函数和匿名函数的对比 1 li = [11, 22, 33...

  • 9.解析式与生成器

    目录1.列表解析2.生成器表达式3.集合解析式4.字典解析式 1. 列表解析介绍 1.1 列表解析介绍 语法: ...

  • Python 生成器和迭代器

    生成器和迭代器 生成器 Python 列表推导和生成器表达式 在上文中简单介绍了生成器的作用。在列表推导创建列表时...

  • Effective Python(9): 用生成器表达式来改写数

    一、生成器表达式产生背景 列表推导Effective Python(7): 用列表推导来取代map和filter ...

网友评论

      本文标题:Python三元表达式-列表解析-生成器表达式

      本文链接:https://www.haomeiwen.com/subject/hndebxtx.html