python-基础知识之三元表达式、列表推导式、生成器表达式
2018-02-01 00:56
906 查看
一、三元表达式
name=input('姓名>>: ')
res='SS' if name == 'PDD' else 'ZZ'
print(res)二、列表推导式
三、生成器表达式
1、将names=['egon','alex_sb','wupeiqi','yuanhao']中的名字全部变大写
2、将names=['egon','alex_sb','wupeiqi','yuanhao']中以sb结尾的名字过滤掉,然后保存剩下的名字长度
3、求文件a.txt中最长的行的长度(长度按字符个数算,需要使用max函数)
4、求文件a.txt中总共包含的字符个数?思考为何在第一次之后的n次sum求和得到的结果为0?(需要使用sum函数)
5、思考题
with open('a.txt') as f:
g=(len(line) for line in f) #拿到的是生成器表达式,
print(sum(g)) #为何报错? # 生成器对象不可做运算
6、文件shopping.txt内容如下
mac,20000,3
lenovo,3000,10
tesla,1000000,10
chicken,200,1
求总共花了多少钱?
打印出所有商品的信息,格式为[{'name':'xxx','price':333,'count':3},...]
求单价大于10000的商品信息,格式同上
name=input('姓名>>: ')
res='SS' if name == 'PDD' else 'ZZ'
print(res)二、列表推导式
#1、示例 egg_list=[] for i in range(10): egg_list.append('鸡蛋%s' %i) egg_list=['鸡蛋%s' %i for i in range(10)] #2、语法 [expression for item1 in iterable1 if condition1 for item2 in iterable2 if condition2]
类似于 res=[] for item1 in iterable1: if condition1: for item2 in iterable2: if condition2: res.append(expression)#3、优点:方便,改变了编程习惯,可称之为声明式编程
三、生成器表达式
#1、把列表推导式的[]换成()就是生成器表达式 #2、示例:生一筐鸡蛋变成给你一只老母鸡,用的时候就下蛋,这也是生成器的特性 >>> chicken=('鸡蛋%s' %i for i in range(5)) >>> chicken <generator object <genexpr> at 0x10143f200> >>> next(chicken) '鸡蛋0' >>> list(chicken) #因chicken可迭代,因而可以转成列表 ['鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4',] #3、优点:省内存,一次只产生一个值在内存中四、声明式编程练习题
1、将names=['egon','alex_sb','wupeiqi','yuanhao']中的名字全部变大写
2、将names=['egon','alex_sb','wupeiqi','yuanhao']中以sb结尾的名字过滤掉,然后保存剩下的名字长度
3、求文件a.txt中最长的行的长度(长度按字符个数算,需要使用max函数)
4、求文件a.txt中总共包含的字符个数?思考为何在第一次之后的n次sum求和得到的结果为0?(需要使用sum函数)
5、思考题
with open('a.txt') as f:
g=(len(line) for line in f) #拿到的是生成器表达式,
print(sum(g)) #为何报错? # 生成器对象不可做运算
6、文件shopping.txt内容如下
mac,20000,3
lenovo,3000,10
tesla,1000000,10
chicken,200,1
求总共花了多少钱?
打印出所有商品的信息,格式为[{'name':'xxx','price':333,'count':3},...]
求单价大于10000的商品信息,格式同上
#题目一 names=['egon','alex_sb','wupeiqi','yuanhao'] names=[name.upper() for name in names] #题目二 names=['egon','alex_sb','wupeiqi','yuanhao'] names=[len(name) for name in names if not name.endswith('sb')] #题目三 with open('a.txt',encoding='utf-8') as f: print(max(len(line) for line in f)) #题目四 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? #题目五(略) #题目六:每次必须重新打开文件或seek到文件开头,因为迭代完一次就结束了 with open('a.txt',encoding='utf-8') as f: info=[line.split() for line in f] cost=sum(float(unit_price)*int(count) for _,unit_price,count in info) print(cost) with open('a.txt',encoding='utf-8') as f: info=[{ 'name': line.split()[0], 'price': float(line.split()[1]), 'count': int(line.split()[2]), } for line in f] print(info) with open('a.txt',encoding='utf-8') as f: info=[{ 'name': line.split()[0], 'price': float(line.split()[1]), 'count': int(line.split()[2]), } for line in f if float(line.split()[1]) > 10000] print(info)
相关文章推荐
- python全栈开发- day14列表推导式、生成器表达式、模块基础
- python 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数
- python基础之生成器、三元表达式、列表生成式、生成器表达式
- Python开发基础-Day9-生成器、三元表达式、列表生成式、生成器表达式
- python基础-生成器进阶(send、from)、各种推导式、生成器表达式
- 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数
- python基础之协程函数、列表表达式、生成器表达式
- 关于python的基础知识13--列表推导式
- python基础----列表生成式、生成器表达式
- Python列表推导式与生成器表达式用法示例
- Python列表推导式和生成器表达式的异同
- Python基础-列表生成式和生成器表达式
- Python基础-列表生成式和生成器表达式
- Python基础:08列表解析与生成器表达式
- python--生成器、三元表达式、列表解析、生成器表达式
- 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数(day4)
- Python列表推导式和生成器表达式
- 面向过程编程、三元表达式、列表推导式与生成器表达式
- python--迭代器,生成器,三元表达式,列表解析,生成器表达式
- Python(迭代、三元表达式、列表生成、生成器、迭代器)