Python3 三元表达式、列表推导式、生成器表达式

  • 三元表达式

    表达式中,有三个元素

name = input("请输入姓名: ")
ret = '输入正确' if name == 'aaa' else '输入错误'
print(ret)
  •  列表推导式
#1、示例
# 方法1
egg_list1 = []
for i in range(10):
egg_list1.append('鸡蛋%s' % i)
print(egg_list1) #方法2
egg_list2 = ['鸡蛋%s' %i for i in range(10)]
print(egg_list2)
#2、语法
[expression for item1 in iterable1 if condition1
for item2 in iterable2 if condition2
...
for itemN in iterableN if conditionN
]
类似于
ret=[]
for item1 in iterable1:
if condition1:
for item2 in iterable2:
if condition2:
...
for itemN in iterableN:
if conditionN:
ret.append(expression) #3、有点:方便,改变了编程习惯,可称之为声明式编程。
  • 生成器表达式
#1、把列表推导式的[]换成()就是生成器表达式

#2、示例:生一筐鸡蛋变成给你一只老母鸡,用的时候就下蛋,这也是生成器的特性
chicken = ('鸡蛋%s' %i for i in range(5))
print(chicken) #<generator object <genexpr> at 0x0000020910EAFF68> print(next(chicken)) #鸡蛋0
print(list(chicken)) ['鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4'] #3、优点省内存,一次只产生一个值在内存中
  • 练习:
#将列表中的名字全部变大写
names=['lily','hanmeimei_hr','lilei','bob']
names = [name.upper() for name in names]
print(names)

#将列表中以hr结尾的名字过滤掉,然后保存剩下的名字长度

names=['lily','hanmeimei_hr','lilei','bob']

names=[len(name) for name in names if not name.endswith('hr')]
print(names)

# 求文件a.txt中最长的行的长度(长度按字符个数算,需要使用max函数)

with open('a.txt' ,encoding='utf-8') as f:
print(max(len(line) for line in f ))

# 求文件a.txt中总共包含的字符个数?思考为何在第一次之后的n次sum求和得到的结果为0?(需要使用sum函数)

with open('a.txt', encoding='utf-8') as f:
print(sum(len(line) for line in f))
print(sum(len(line) for line in f)) #求包换换行符在内的文件所有的字符数,为何得到的值为0?
print(sum(len(line) for line in f)) #求包换换行符在内的文件所有的字符数,为何得到的值为0?

最新文章

  1. RAID与双机热备简单介绍与区别
  2. C# Out 传值
  3. Jni中C++和Java的参数传递 参数对照
  4. Windows7下 配置 Apache + PHP + MySQL + Zend Studio配置
  5. Linux磁盘占用100%解决方法
  6. 【UR #12】实验室外的攻防战(BIT)
  7. Big Data應用:以&quot;玩家意見&quot;之數據分析來探討何謂&quot;健康型線上遊戲&quot;(上)
  8. jQuery.YesShow - 图片轮播插件(带图片放大功能)
  9. Excel VBA ——批量工作表重命名
  10. Flex Label自动截取、自动换行
  11. python glob 用通配符查找指定目录中的文件 - 开源中国社区
  12. 开发一个基于 Android系统车载智能APP
  13. Docker系列三:Docker容器管理
  14. sort list(给链表排序)
  15. 【原创】大数据基础之Spark(1)Spark Submit即Spark任务提交过程
  16. WinForm 绑定到嵌套对象上的属性
  17. hyperledger中文文档学习-1-词汇表
  18. Auzre系列1.1.1 —— 安装用于 IntelliJ 的 Azure 工具包
  19. Hadoop -- 概念
  20. Go语言之unsafe包介绍及使用

热门文章

  1. 【算法与数据结构】并查集 Disjoint Set
  2. iframe根据子frame的高度自动高度
  3. 【MM系列】SAP 各种冲销凭证
  4. 【MM系列】SAP PO增强BADI
  5. centos 7 里如何判断IP是否合法
  6. HTTP请求状态码为400时的原因
  7. [转帖]JVM内存结构 VS Java内存模型 VS Java对象模型
  8. 跟风Manacher算法整理
  9. 洛谷 P5662 纪念品 &amp; [NOIP2019普及组] (dp,完全背包)
  10. python 二分法实现