python列表解析式,字典解析式,集合解析式和生成器,,一.列表解析式(列表
python列表解析式,字典解析式,集合解析式和生成器,,一.列表解析式(列表
一.列表解析式(列表推倒式):
功能:是提供一种方便的列表创建方法,所以,列表解析式返回的是一个列表.
lst = [1, 3, 5, 8, 10]
ll = [x+x for x in lst if x <= 5]
print ll
>>>[2, 6, 10]
二.字典解析式:
dic = {‘a‘: 1, ‘b‘: 2, ‘c‘: 3}
d = {k: v for k, v in dic.items() if v >=2}
print d
>>>{‘c‘: 3, ‘b‘: 2}
三.集合解析式:
集合推导和列表推导的使用方法是类似的,只不中括号该改成大括号.
lst = [1, 3, 5, 8, 10]
aa = {x+x for x in lst if x <= 5} //注意集合解析式使用大括号!!!
print aa
>>>set([2, 10, 6]) //且输出为一个集合!!!
四.生成器:
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元
素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。
所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完
整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。
python提供两种方式创造生成器:
①生成器函数:和常规函数一样定义,不过用yield而不是return。
yeild会一次返回一个结果,然后挂起,下次从挂起处继续执行,这样就解决了内存的限制。
注:其他方式会一次执行完所有的结果,然后再一次返回一个结果,这样,如果数据量大就会受到内存的限制,而且会占用大存
储空间。
def gen(n):
for i in range(n):
yeild i + 2
for item in gen(10):
print item
②生成器生成式:
和列表生成式类似,只是将方括号替换为中括号。
generators = (x+2 for x in range(10))
python列表解析式,字典解析式,集合解析式和生成器
相关内容
- Python一行读入多个整数+map()函数解析,,python中的输入
- Python全栈 项目(HTTPServer、PiP使用),,pip是Python
- python 命名元组(namedtuple),,我们知道c/c++语
- Python-模块分类及引入,,使用python时,
- python 小练习 11,,桌子上有一堆数量不超
- python获取Windows特殊文件夹路径,,有时候你想给你的程
- Python简洁写法(一),,目录1、多元赋值2、
- 如何用Python读取Excel中图片?又如何用Python往Excel中写入
- Python循环语句代码详解:while、for、break,
- Python包管理之poetry的使用,,poetry是一个P
评论关闭