python基础----列表生成式、生成器表达式
结论:
1.把列表解析的[]换成()得到的就是生成器表达式
2.列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存
3.Python不但使用迭代器协议,让for循环变得更加通用。大部分内置函数,也是使用迭代器协议访问对象的。例如, sum函数是Python的内置函数,该函数使用迭代器协议访问对象,而生成器实现了迭代器协议,所以,我们可以直接这样计算一系列值的和:
- sum(x ** 2 for x in xrange(4))
而不用多此一举的先构造一个列表:
- sum([x ** 2 for x in xrange(4)])
♥♥♥。◕‿◕。♥♥♥
一、列表生成式
- #三元表达式
- name='alex'
- name='egon'
- res='SB' if name == 'alex' else 'shuai'
- print(res)
- #例子1
- 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 > 50]
- print(l)
- #例子2
- l=[1,2,3,4]
- s='hello'
- l1=[(num,s1) for num in l if num > 2 for s1 in s]
- print(l1)
- l1=[]
- for num in l:
- for s1 in s:
- t=(num,s1)
- l1.append(t)
- print(l1)
- #例子3
- import os
- g=os.walk('C:\\egon')
- 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('C:\\egon')
- l1=['%s\\%s' %(i[0],j) for i in g for j in i[-1]]
- print(l1)
二、生成器表达式
- #例子1
- l=['egg%s' %i for i in range(100)]
- 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)
- #例子2
- f=open('a.txt')
- l=[]
- for line in f:
- line=line.strip()
- l.append(line)
- print(l)
- f.seek(0)
- l1=[line.strip() for line in f]
- print(l1)
- f.seek(0)
- g=(line.strip() for line in f)
- print(g)
- print(next(g))
- #例子3
- f=open('a.txt')
- g=(line.strip() for line in f)
- l=list(g)
- print(l)
- nums_g=(i for i in range(3))
- # print(sum([1,2,3,4]))
- print(sum(nums_g))
- #例子4
- 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)
- f=open('b.txt')
- g=(float(line.split()[-1])*float(line.split()[-2]) for line in f)
- print(sum(g))
- with open('b.txt') as f:
- print(sum((float(line.split()[-1])*float(line.split()[-2]) for line in f)))
- #例子5
- 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)
python基础----列表生成式、生成器表达式的更多相关文章
- python 基础 列表生成式 生成器
列表生成式 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式 举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, ...
- python协程函数应用 列表生成式 生成器表达式
协程函数应用 列表生成式 生成器表达式 一.知识点整理: 1.可迭代的:对象下有_iter_方法的都是可迭代的对象 迭代器:对象._iter_()得到的结果就是迭代器 迭代器的特性: 迭代器._n ...
- python基础——列表生成式
python基础——列表生成式 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个例子,要生成list [1, 2, 3, 4 ...
- Py修行路 python基础 (十二) 协程函数应用 列表生成式 生成器表达式
一.知识点整理: 1.可迭代的:对象下有_iter_方法的都是可迭代的对象 迭代器:对象._iter_()得到的结果就是迭代器 迭代器的特性: 迭代器._next_() 取下一个值 优点: 1.提供了 ...
- Python基础-列表生成式和生成器表达式
一.列表生成式(List Comprehension) 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个例子,要生成list ...
- python之列表和生成器表达式篇
一.协程函数的应用 写一个装饰器用于让协程函数不需要输入再执行一次next()函数 分析: 在装饰器中生成该协程函数的生成器, 并且执行一次next()函数 def firstNext(func): ...
- 列表生成式&生成器表达式
一.列表生成式 def func(): return [lambda x:i*x for i in range(4)] print([j(2) for j in func()]) 结果:[6,6,6, ...
- python 基础 列表生成式
data = {'a':'abc';'b':'bac','c':'cba'} [v for k,v in data] 结果 ['abc','bca','cba'] 格式 [x for x in 内容 ...
- Python之列表生成式、生成器、可迭代对象与迭代器
本节内容 语法糖的概念 列表生成式 生成器(Generator) 可迭代对象(Iterable) 迭代器(Iterator) Iterable.Iterator与Generator之间的关系 一.语法 ...
随机推荐
- Qt creator 最常用的13个快捷键
alt +enter // 自动创建类的定义 F1 // 查看帮助,文档 F2 // 快速到变量声明 Shift + F2 // 函数的声明和定义之间快速切换 F4 // 在 cpp 和 h 文件切换 ...
- 3星|《十大全球CEO亲授企业高速成长的关键战略》:作为CEO,我也非常坦率地表明过家庭优先于工作
十大全球CEO亲授 企业高速成长的关键战略(<哈佛商业评论>增刊) <哈佛商业评论>上的10来篇文章合集.大部分都看过,除了一篇中信的访谈,其他大部分是美国的有点旧的案例. 总 ...
- Halcon如何保存仿射变换矩阵
这里我们通过序列化来实现的,如下图,写到硬盘的HomMat2D_1内容和从硬盘里HomMat2D_2读出的内容一致,源代码在图片下方. Halcon源代码: hom_mat2d_identity (H ...
- 算法笔记(c++)--求一个数的所有质数因子
算法笔记(c++)--求一个数的所有质数因子 先贴题目: 这题不难,恶心在理解上面.最后看评论知道了怎么回事: 2*2*3*3*5=180 按照这逻辑的话应该输入的数由一系列质数相乘出来,所以每次找到 ...
- 亚马逊:PS4和Xbox One实在太火
圣诞节刚刚结束,当实体零售商在抱怨坑爹的天气让自己节日生意变得冷清的同时,在线零售商们却依旧赚的盆满钵满. 亚马逊近日表示,今年节日期间的零售工作非常不错,新一代游戏机更是最大的亮点.据销售统计,在圣 ...
- c++ Dynamic Memory (part 1)
1. make_shared<T>(args): return a shared_ptr dynamically allocated object of type T. Use args ...
- python request 获取cookies value值的方法
import requests res = requests.get(url) cookies = requests.utils.dict_from_cookiejar(res.cookies) pr ...
- OOP 2.2 构造函数
1.概念 成员函数的一种 名字与类名相同,可以有参数,没有返回值(void也不行) 作用:对对象进行初始化,如给成员函数赋初始值 如果定义时没有构造函数,则编译器生成一个默认无参数的构造函数 默认构造 ...
- CodeForces 154A Hometask dp
题目链接: http://codeforces.com/problemset/problem/154/A 题意: 给你一个字符串,和若干模板串(长度为2),至少删除多少个字母,使得字符串的字串里面没有 ...
- IT小小鸟读后感言
有感 读了我是一只IT小小鸟之后, 我发现上大学得靠自己自学,确定自己的目标和方向,多去参与实验和自己多锻炼编写程序.我现在大一,还有很多时间来让自己变得更好,虽然要补考两门课程,但是还是不要失去信心 ...