python3 推导式大总结

推导式 --总结并引出 生成器推导式

##列表推导式

>>> a = [i for i in range(100) if not(i%2) and i%3] ##注意列表是中括号 三项内容 变量 循环体 判断条件
>>> a #输出为符合判断条件的结果 100以内能被2整除的数字
[2, 4, 8, 10, 14, 16, 20, 22, 26, 28, 32, 34, 38, 40, 44, 46, 50, 52, 56, 58, 62, 64, 68, 70, 74, 76, 80, 82, 86, 88, 92, 94, 98]
>>>

##字典推导式

>>> b = {i : i %2 ==0 for i in range(20)} ##字典推导式注意 那个独特的 冒号 ‘:‘ 三项内容 变量 条件 循环体
>>> b ##和列表推导式不一样的就是输出的结果,如果判断条件成立 输出就是True 否则输出False
{0: True, 1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False, 10: True, 11: False, 12: True, 13: False, 14: True, 15: False, 16: True, 17: False, 18: True, 19: False}
>>>

##集合推导式

>>> c ={i for i in [1,1,2,5,6,48,7,9,6,5,4,1,2,3,65,2,6,52,6,9,5]} ##集合推导式要注意的是 他和字典推导式的区别和联系 练习是 外部都是用的[]中括号的 不同就很明显了 两项内容 变量 循环体
>>> c ##输出内容 为本例中的列表的非重复输出
{1, 2, 3, 4, 5, 6, 7, 9, 48, 52, 65}
>>> 

‘‘‘集合(set)是一个无序不重复元素的序列。
它的主要作用如下:
去重,把一个列表变成集合,就自动去重了
关系测试,测试两组数据之前的交集、差集、并集等关系
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。‘‘‘    --------这一句总结来自网友 @奋斗中的咸鱼

###字符串推导式 看看行不行

>>> d = "i for i in ‘I love you!‘"
>>> d
"i for i in ‘I love you!‘" ##我* 果然不可以 ,我们看到 这个双括号中的字符串 被原版的打印出来了 并没有做任何和其他推导式那样子的工作
>>>

###那么还有什么可以玩一下推导式那 ,是不是还有元组推导式没有玩过 ,好吧 下面翻她的牌

>>> e = (i for i in range(10)) ###元组使用小括号括起来的
>>> e
<generator object <genexpr> at 0x00000000034305E8> ###哎 怎回事,输出有点不一样啊,第一个单词好像叫做生成器的,对了,这个是生成器的推导式了,这里就是引出这个家伙的
>>> next(e) ##是生成器就可以使用next()这个函数类查看了
0
>>> next(e)
1
>>> next(e)
2
>>> next(e)
3
>>> for i in e: ##想了一下 上边的一个一个输出太慢了 来一个循环吧 把剩下的内容搞出来
print(i)

4
5
6
7
8
9
>>> 

#至此我们看到了原来元组是没有推导式的,他的书写格式原来是生成器的推导式,好吧记下来吧!元组原来和生成器还有这样的私交啊!

##还有一句话要说,这里我们找了生成器的推导式,那么生成器还有一个比较骚的操作 ,那就是生成器推导式如果作为一个函数的参数时,他可以直接写推导式而不用带上自己的小括号里(把衣服拔掉了 嘿嘿) 样子就像下边的

>>> sum((i for i in range(10)))
45

>>> sum(i for i in range(10))
45
>>> 

##这个操作就是上边的对比了,去掉小括号吧(我养你)

感谢:小甲鱼

原文地址:https://www.cnblogs.com/loved/p/8671149.html

时间: 2024-10-04 13:33:53

python3 推导式大总结的相关文章

第9条:用生成器表达式来改写数据量较大的列表推导式

核心知识点: (1)当输入的数据量较大时,列表推导可能会因为占用太多内存而出问题. (2)由生成器表达式所返回的迭代器,可以逐次产生输出值,从而避免内存用量问题. (3)把某个生成器表达式所返回的迭代器,放在另一个生成器表达式的for子表达式中,即可将二者结合起来. (4)串在一起的生成器表达式执行速度很快. 列表推导式的缺点是:在推导过程中,对于输入序列中的每个值来说,可能都要创建仅含一项元素的全新列表. 当输入的数据比较少时,不会出任何问题,但如果输入的数据非常多,那么可能会消耗大量内存,并

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

Python3 三元表达式.列表推导式.生成器表达式 三元表达式 表达式中,有三个元素 name = input("请输入姓名: ")ret = '输入正确' if name == 'aaa' else '输入错误'print(ret)  列表推导式 #1.示例# 方法1egg_list1 = []for i in range(10): egg_list1.append('鸡蛋%s' % i)print(egg_list1) #方法2egg_list2 = ['鸡蛋%s' %i for

python之生成器和列表推导式

一.生成器函数1.生成器:就是自己用python代码写的迭代器,生成器的本质就是迭代器(所以自带了__iter__方法和__next__方法,不需要我们去实现).2.用以下两种方式构建一个生成器:1,生成器函数:跟常规函数定义类似,但是,使用yield语句而不是return语句返回结果.yield语句一次返回一个结果,在每个结果中间,挂起函数的状态,以便下次从它离开的地方继续执行. 2,生成器表达式:类似于列表推导,但是,返回的是生成器的一个对象,而不是一次构建一个结果列表. 3.生成器函数3-

python 推导式和迭代器、生成器

1.常用推导式 推导式是从一个或者多个迭代器快速简洁创建数据结构的一种方法. 1.1 _ 列表推导式 最简单的形式:  [exprssion for item in iterable] 示例:  number_list = [x for x in range(1,10)]  加上条件表达式的形式:  [exprsssion for item in iterable if condition]  示例: a_list = [x for x in range(1,7) if x %2 ==1] 多个

python数据类型详解及列表字典集合推导式详解

一.运算符 Python语言支持以下类型的运算符: 算术运算符 如: #!/usr/bin/env python # -*- coding:utf-8 -*- a = 5 b = 6 print(a + b) 比较运算符 例: #!/usr/bin/env python # -*- coding:utf-8 -*- a = 5 b = 6 if a < b: print(True) else: print(False) 赋值运算符 例: #!/usr/bin/env python # -*- c

列表推导式----生成器表达式

列表推导式: 基本形式: [表达式  for  参数  in  可迭代对象]   或者 [表达式  for  参数  in  可迭代对象  if   条件] 实例: 1 l = [] 2 for i in range(100): 3 l.append('egg%s' %i) 4 print i 5 6 #不带if条件 7 l = ['agg%s' %i for i in range(100) ] 8 9 #带if条件 10 l = ['agg%s' %i for i in range(100)

day14,列表推导式,生成器表达式,内置函数

一.列表推导式.生成器表达式: # li = []# for i in range(1,101):# li.append(i)# print(li) #l1 = [python1期,python2期,python3期.....]# l1 = []# for i in range(1,12):# l1.append('python%s期' % i)# print(l1)#一行搞定,列表推导式:用列表推导式能够构建的任何列表,用别的都可以构建.#一行,简单,感觉高端.但是,不易排错.# li = [

(列表推导式,生成器表达式,内置函数)

一,列表生成式 示例一: 生成1~100的列表 生成1-100的列表 1 2 3 4 5 li = [] for i in range(1,101):     li.append(i) print(li) 执行输出: [1,2,3...] 生成python1期~11期li = []for i in range(1,12): li.append('python{}期'.format(i))print(li) 执行输出: ['python1期', 'python2期', 'python3期'...]

day5--装饰器函数的信息打印,迭代器,生成器,列表推导式,内置函数

本文档主要内容: 一 装饰器函数的信息打印 二 迭代器 三 生成器 四 生成器表达式和列表推导式 五 内置函数 一 装饰器函数的信息打印 一个函数一旦被装饰器给装饰后,这个函数的信息使用原来的命令打印的就是装饰器函数的信息了,如何做呢? from functools import wraps def logger(f): @wraps(f) def inner(*args, **kwargs): """ :param args: 函数名,密码 :param kwargs: 备