列表表达式

程序一:

常规写法:

egg_list=[]

for i in range(100):
egg_list.append('egg%s' %i)
print(egg_list)

列表表达式写法:

l=['egg%s' %i for i in range(100) if i > 0]  #列表写法:[命令+循环语句]。'egg%s' %i 这句话在列表中,所以不用append命令写入列表中
print(l)

程序二:

常规写法:

l=[1,2,3,4]
s='hello'
l1=[]
for num in l:
for s1 in s:
t=(num,s1)
l1.append(t)
print(l1)

列表表达式写法:

l1=[(num,s1) for num in l if num > 0 for s1 in s]  #if num >0 这句判断可以去掉
print(l1)

程序三:

常规写法:

import os
#查看xuyaping文件夹所有的绝对路径
g=os.walk('F:\\xuyaping')
file_path_list=[]
for i in g:
# print(i)
for j in i[-1]:
file_path_list.append('%s\\%s' %(i[0],j)) print(file_path_list)

列表表达式写法:

g=os.walk('F:\\xuyaping')
l1=['%s\\%s' %(i[0],j) for i in g for j in i[-1]]
print(l1)

生成器表达式

相比列表表达式,只不过将[]换成了(),更加省内存。

程序一:

列表表达式写法:

l=['egg%s' %i for i in range(10000)]
print(l)

生成器表达式写法:

g=l=('egg%s' %i for i in range(10000))
print(g)
print(next(g))
print(next(g))
for i in g:
print(i)

程序二:

常规写法:

f=open('a.txt')
l=[]
f.seek(0) #光标移动到文档首行首位
for line in f:
line=line.strip()
l.append(line)
print(l)

列表表达式写法:

f=open('a.txt')
f.seek(0)
l1=[line.strip() for line in f]
print(l1)

生成器表达式写法:

f=open('a.txt')
f.seek(0)
g=(line.strip() for line in f)
print(g)
print(next(g))

  

程序三:

生成器表达式写法:

f=open('a.txt')
g=(line.strip() for line in f) #g为迭代器 l=list(g) #list(可迭代对象),迭代取出g中的所有内容
print(l)
---->['asdfasdfasdfasdfasdf', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '', 'asdfasdfasdfasdf']

nums_g=(i for i in range(3))

# print(sum([1,2,3,4]))
print(sum(nums_g)) #sum(可迭代对象),
迭代将g中的所有元素相加
                  asdfasdfasdfasdfasdf
123123123123
123123123123
123123123123
123123123123
123123123123
123123123123
123123123123
123123123123
123123123123
123123123123
123123123123
123123123123
123123123123
123123123123
123123123123
123123123123
123123123123
123123123123
123123123123
123123123123 asdfasdfasdfasdf

a.txt

程序四:

常规方法:

money_l=[]
with open('b.txt') as f:
for line in f:
goods=line.split()
res=float(goods[-1])*float(goods[-2])
money_l.append(res)
print(money_l)
---->[30.0, 1000000.0, 6000.0, 90000.0, 30.0]

生成器表达式写法:

f=open('b.txt')
g=(float(line.split()[-1])*float(line.split()[-2]) for line in f) print(sum(g))
---->1096060.0

程序五:

res=[]
with open('b.txt') as f:
for line in f:
# print(line)
l=line.split()
# print(l)
d={}
d['name']=l[0]
d['price']=l[1]
d['count']=l[2]
res.append(d) print(res)
---->[{'name': 'apple', 'price': '10', 'count': '3'}, {'name': 'tesla', 'price': '1000000', 'count': '1'}, {'name': 'mac', 'price': '3000', 'count': '2'}, {'name': 'lenovo', 'price': '30000', 'count': '3'}, {'name': 'chicken', 'price': '10', 'count': '3'}]

生成器表达式写法:

with open('b.txt') as f:
res=(line.split() for line in f)
print(res)
dic_g=({'name':i[0],'price':i[1],'count':i[2]} for i in res)
print(dic_g)
apple_dic=next(dic_g)
print(apple_dic['count'])   apple_dict=next(dic_g)
  print(apple_dict)
---->{'name': 'tesla', 'price': '1000000', 'count': '1'}
 apple 10 3
tesla 1000000 1
mac 3000 2
lenovo 30000 3
chicken 10 3

b.txt

#取出单价>10000
with open('b.txt') as f:
res=(line.split() for line in f)
# print(res)
dic_g=({'name':i[0],'price':i[1],'count':i[2]} for i in res if float(i[1]) > 10000)
print(dic_g)
----> <generator object <genexpr> at 0x0000000001E05888>
print(list(dic_g))
----> [{'name': 'tesla', 'price': '1000000', 'count': '1'}, {'name': 'lenovo', 'price': '30000', 'count': '3'}]

  

最新文章

  1. VS.Net 2015 Update3 学习(1) 支持Webpack
  2. Leetcode 137. Single Number I/II/III
  3. Allegro16.3约束设置 (转载)
  4. 使用VideoView自定义一个播放器控件
  5. Nginx安装(zhuan)
  6. Python爬虫学习笔记——防豆瓣反爬虫
  7. 【转载】Oracle的方案(Schema)和用户(User)的区别
  8. 从linux启动到rootfs的挂载分析
  9. Java中判断集合类为空的方法
  10. WinForm RDLC SubReport Step by step
  11. delphi datasnap 心跳包
  12. Hive安装和部署
  13. 最大流模版 EK
  14. 关于在Django中Json无法序列化datetime的解决办法
  15. ●2301 [HAOI2011] Problem b
  16. Java实现Base64加密
  17. Installing Precise (12.04.2) using netboot onto a Marvell ArmadaXP Development Board
  18. ZCU板级调试Bug记录
  19. 阿里云mysql数据库备份还原
  20. swift学习:第一个swift ui程序

热门文章

  1. C语言知识点(4)
  2. 常用类--Date日期类,SimpleDateFormat日期格式类,Calendar日历类,Math数学工具类,Random随机数类
  3. 【Luogu】P2536病毒检测(Trie上DP)
  4. Codeforces 899D Shovel Sale
  5. 基于RESTful 的几种实现(就随便了解一下)
  6. Ubuntu12.04 64bit版本下载Android源码完整教程
  7. es6总结(十一)--class &amp; decorator
  8. WebRTC编译详细介绍 (转)
  9. 标准C程序设计七---115
  10. Python struct 详解