【python之路48】生成器表达式、推导式

一、生成器表达式

1、 生成器表达式为:

(结果 for 变量 in 可迭代的对象 if 条件)--》if条件可以省略

ge = (i for i in range(1, 11))
print(ge)  # <generator object <genexpr> at 0x0000023EA176B5C8>

for elment in ge:
    print(elment)  # 结果从1打印到10

# # 实际相当于
# def ge():
#     for i in range(1, 11):
#         yield i
#
# for i in ge():
#     print(i)

二、推导式

1、列表推导式

[结果 for 变量 in 可迭代的对象 if 条件]        --》if条件可以省略

li = [i for i in range(1,11)]
print(li)  #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

li2 = [i for i in range(1,11) if i % 2 == 0]
print(li2) #[2, 4, 6, 8, 10]

2、字典推导式

[key:value for 变量 in 可迭代的对象 if 条件}        --》if条件可以省略

li1=["黑旋风","花和尚","豹子头","行者"]
li2=["李逵","鲁智深","林冲","武松"]

dic = {li1[i]:li2[i] for i in range(len(li1))}
print(dic)

#打印结果
#{‘黑旋风‘: ‘李逵‘, ‘花和尚‘: ‘鲁智深‘, ‘豹子头‘: ‘林冲‘, ‘行者‘: ‘武松‘}

3、集合推导式

{结果 for 变量 in 可迭代的对象 if 条件}        --》if条件可以省略}

se = {i for i in range(1,11)}
print(se)  #{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

4、注意:没有元组推导式,元组推导式的格式被生成器表达式占用



原文地址:https://www.cnblogs.com/sunshuhai/p/12404915.html

时间: 2024-10-10 12:46:08

【python之路48】生成器表达式、推导式的相关文章

python 【迭代器 生成器 列表推导式】

python [迭代器  生成器  列表推导式] 一.迭代器 1.迭代器如何从列表.字典中取值的 index索引 ,key for循环凡是可以使用for循环取值的都是可迭代的可迭代协议 :内部含有__iter__方法的都是可迭代的迭代器协议 :内部含有__iter__方法和__next__方法的都是迭代器 print(dir([1,2,3])) lst_iter = [1,2,3].__iter__() print(lst_iter.__next__()) print(lst_iter.__ne

函数生成器、推导式及python内置函数

函数生成器.推导式及python内置函数 函数生成器 生成器的定义 在 Python 中,使用了 yield 的函数被称为生成器(generator). 跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器. 在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行. 调用一个生成器函数,返回的是一个迭代器对象. 生成器与迭代器的区别 生成

python高级编程之生成器表达式和itertools模块

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #生成器表达式和itertools模块 #yield 中可以使用圆括号代替中括号 iter0=(x**2 for x  in range(10)if x%2==0) for iter1 in iter0: print iter1 #结果 """ 0 4 16 36 64 """ #这样的表达式被称为生成器或者gene

python之路---12 生成器 推导式

三十.函数进阶 1.生成器    函数中有yield 的就是生成器函数(替代了return) 本质就是迭代器   一个一个的创建对象     节省内存 ①创建生成器       最后以yield结束 1. 通过?成器函数   2. 通过各种推导式来实现?成器 3. 通过数据的转换也可以获取?成器 ②send用法 send 和 __next__都是下一个的意思 但send可以给上一个yield 位置传值   不能给最后?个yield发送值. 在第?次执?? 成器代码的时候不能使?send() ③y

python生成器和推导式

一.生成器 什么是生成器.生成器实质就是迭代器. 在python中有三种方式来获取生成器: 1.通过生成器函数 2.通过各种推导式来实现生成器 3.通过数据的装换也可以获取生成器 def func(): print("111") return 222 ret = func() print(ret) 结果:111 222 将函数中的return换成yield就是生成器 def func() print("111") yield 222 ret = func() pri

(一)Python入门-4控制语句:10推导式创建序列-列表推导式-字典推导式-集合推导式-生成器推导式

推导式创建序列: 推导式是从一个或者多个迭代器快速创建序列的一种方法.它可以将循环和条件判断结合, 从而避免冗长的代码.推导式是典型的Python 风格,会使用它代表你已经超过Python初 学者的水平. 一:列表推导式 列表推导式生成列表对象,语法如下: [表达式 for item in 可迭代对象 ] 或者:{表达式 for item in 可迭代对象 if 条件判断} 1 #列表推导式 2 x = [x for x in range(1,5)] 3 print(x) 4 5 x = [x*

Python之函数(七)生成器与推导式

4.10 生成器 简介: 什么是生成器? 生成器的本质就是迭代器 生成器跟迭代器的区别:迭代器都是python给你提供已经写好的工具或者数据转换而来的,生成器需要我们自己用python代码构建的工具 生成器的构建方式 通过生成器函数 def func(): print(11) return 22 ret=func() print(ret) #结果为:11 22 #将函数中的return换成yield,这样func就不是函数了,而是一个生成函数 def func(): print(11) yiel

Python 生成器和推导式

一.Python生成器和生成器函数1.生成器和生成器函数的概念    1.生成器的本质是迭代器    2.函数中包含yield,就是生成器函数 2.生成器函数的写法    def func():        a =10        yield 20    gen = func()  #没有执行,而是生成一个生成器    普通函数和生成器函数的不同    1.普通函数名()表示函数的的执行    2.生成器函数名()不是函数的执行,而是生成一个生成器 yield和return的不同    1.

Python的高级特性2:列表推导式和生成器

一.列表推导式 1.列表推导式是颇具python风格的一种写法.这种写法除了高效,也更简短. In [23]: ['i:el' for i,el in enumerate(["one","two","three"])] Out[23]: ['i:el', 'i:el', 'i:el'] enumerate是内建函数,可以让列表获得“下标”的属性.而如果不用列表推导式,上例需要这么写 In [24]: lst = ["one",