一、列表生成式

  用来创建list的表达式,相当于for循环的简写形式

  语法: [表达式 for循环 判断条件]

 '''
普通写法
'''
def test():
l= []
for i in range(10):
l.append(i*i)
return l
print(test()) '''
高级写法
'''
l = [x * x for x in range(10)]
print(l) '''
更高级的用法
格式:[操作 for i in range(x) 执行操作的条件(x)]
'''
##得到0-9序列中偶数的平方
l = [x * x for x in range(10) if x%2==0)]
print(l)
'''
高级解释:x*x 来源于0--9的for循环 但是 x要满足x%2==0
'''
 ## 提取字符串中的数字,组成字符串
l = 'asd123fds123'
l2 = [x for x in l if x.isdigit()]
x =''.join(x) ## 字符串拼接
print(x)
'''
解释:x 来源于for循环(遍历l), 但是x要是数字
'''

二、生成器generator

    生成器和列表生成器很像,只是把中括号变成小括号

    生成器不会一次性生成所有数据,只有在调用的时候才生成。

    生成器不能通过切片、或者下标取数据,只能循环或者next()取数据--- 注意生成器的位置问题,类似于‘’句柄‘’

##生成器的语法和列表生成器很像
g = (x*x for x in range(10))
print(g) ## 输出是:generator对象
print(type(generator)) ## 输出是:generator对象 print(next(g)) ## 获得下一个元素 ## 直接遍历generator对象
for n in g:
print(n)

二、可迭代对象和迭代器

    可迭代对象(Iterable):能被for遍历     不能next()

    迭代器(Iterator):        能被for遍历     能next()函数调用,不断返回下一个值

    迭代器对象表示一个数据流,可以被看做是一个序列,但是长度不可知。只是在需要的时候,才会计算。

它可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误

 ## 可以被for循环的对象,称为可迭代对象
## 可以被next()和for访问,称之为迭代器对象(用的时候才生成)
from collections import Iterable,Iterator ## 判断对象的类型-- 类似于type
print(isinstance([],Iterable))## True 可迭代 对象
print(isinstance([],Iterator))## Flase 不是可迭代器对象 不能next访问 print(isinstance('a',Iterable))##True
print(isinstance('a',Iterator))##Flase print(isinstance({},Iterable))##True
print(isinstance({},Iterator))##Flase ## 数值既不是可迭代对象,也不是迭代器对象
## 列表、字符串、字典、元祖 都是Iterable对象,不是Iterator对象
## generator、map、filter既是Iterable对象,也是Iterator对象 ##可迭代对象转为迭代器对象--- iter()
it = iter([1,2,3])
print(next(it)) ##输出1 print('----------------------')
l = [(2,12),(6,23),(4,8)]
l.sort(key=lambda x:x[1],reverse=True) ## sort(key,...)根据什么条件排序,排序条件 print(l)
print(l[0][0])

type主要用于获取未知变量的类型,范围比较小
isinstance主要用于判断A类是否继承于B类,范围更大

python基础---列表生成器、迭代器等的更多相关文章

  1. python基础(八)生成器,迭代器,装饰器,递归

    生成器 在函数中使用yield关键字就会将一个普通的函数变成一个生成器(generator),普通的函数只能使用return来退出函数,而不执行return之后的代码.而生成器可以使用调用一个next ...

  2. python基础之生成器迭代器

    1 生成器: 为什么要有生成器? 就拿列表来说吧,假如我们要创建一个list,这个list要求格式为:[1,4,9,16,25,36……]这么一直持续下去,直到有了一万个元素的时候为止.如果我们要创建 ...

  3. python高级之生成器&迭代器

    python高级之生成器&迭代器 本机内容 概念梳理 容器 可迭代对象 迭代器 for循环内部实现 生成器 1.概念梳理 容器(container):多个元素组织在一起的数据结构 可迭代对象( ...

  4. 第三篇:python高级之生成器&迭代器

    python高级之生成器&迭代器   python高级之生成器&迭代器 本机内容 概念梳理 容器 可迭代对象 迭代器 for循环内部实现 生成器 1.概念梳理 容器(container ...

  5. 十三. Python基础(13)--生成器进阶

    十三. Python基础(13)--生成器进阶 1 ● send()方法 generator.send(value) Resumes the execution, and "sends&qu ...

  6. 十二. Python基础(12)--生成器

    十二. Python基础(12)--生成器 1 ● 可迭代对象(iterable) An object capable of returning its members one at a time. ...

  7. python基础——列表生成式

    python基础——列表生成式 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个例子,要生成list [1, 2, 3, 4 ...

  8. python基础——列表推导式

    python基础--列表推导式 1 列表推导式定义 列表推导式能非常简洁的构造一个新列表:只用一条简洁的表达式即可对得到的元素进行转换变形 2 列表推导式语法 基本格式如下: [expr for va ...

  9. Python基础------列表,元组的调用方法

    Python基础------列表,元组的调用方法@@@ 一. 列表 Python中的列表和歌曲列表类似,也是由一系列的按特定顺序排列的元素组成的,在内容上,可以将整数,实数,字符串,列表,元组等任何类 ...

随机推荐

  1. 版本控制commit和update过程

    很早就使用了git.后来还管了一个VSS,但长时间以来git和VSS基本都当ftp使用,顶多知道其有回退旧版本的功能,但对“版本控制”这个词一直以来都没领会其内含. 比如我一直担心两个问题,一是拉取下 ...

  2. post传递中文时,可以使用urlEncode编码进行转码

    http://tool.chinaz.com/tools/urlencode.aspx

  3. python - 闭包,迭代器

    一.第一类对象 1.函数名的运用     函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量     1.函数名的内存地址 def func1(): print('你是谁,你来自哪里 ...

  4. smb 访问时 提示权限不够

    1. 确认 防火墙关闭和getenforce 为Permissive 状态. 关闭防火墙 service iptables stop 关闭  setenforce 0 2.windows 登录切换 身 ...

  5. socket应用(vue、node.js、M站)

    socket应用(vue.node.js.M站) 前言:我们在做一些项目的时候需要做到实时变化, 比如我们有时候有需求会要求我们做一个类似于聊天室的页面 比如有些时候我们对某些东西进行点赞和刷票,需要 ...

  6. C# 使用密码连接Redis

    单个Redis客户端: // 以StackOverflow.Redis的开源项目为例 ConnectionMultiplexer redis = ConnectionMultiplexer.Conne ...

  7. JS中的作用域(一)-详谈

    本篇文章在于详细解读JavaScript的作用域,从底层原理来解释一些常见的问题,例如变量提升.隐式创建变量等问题,在和大家一起交流进步的同时,也算对自己知识掌握的记录,方便以后复习 首先,直接捡干的 ...

  8. Linux c使用gumbo库解析页面表单信息(二)

    一.如何在程序当中使用gumbo? 要想在代码中使用gumbo,仅仅包含gumbo头文件是不够的,必须在编译程序的时候加上-lgumbo选项,编译程序才会链接到gumbo库上面. 这是我编译gumbo ...

  9. java 8 Lambda

    警告: 初学者随笔, 请关闭此网页, 以免浪费你的时间

  10. tensorflow estimator API小栗子

    TensorFlow的高级机器学习API(tf.estimator)可以轻松配置,训练和评估各种机器学习模型. 在本教程中,您将使用tf.estimator构建一个神经网络分类器,并在Iris数据集上 ...