python高级篇
1.切片功能:类似于java中的split方法。对list或者triple中几个值进行取出的过程。
L = ['a','b','c','d'] L[0:3] = ['a','b','c'] #下标从0开始,取到第n-1个元素 L[-2:] =['c','d'] #倒序取值
2.迭代(循环)功能:python中的可遍历对象只要是可迭代对象,例如list,triple,dict,字符串
dict默认迭代的是key值,也可以循环value值。for value in d.values() 同时迭代 for k,v in d.items()
判断是否为可迭代对象:
from collections import Iterable
isinstance('abc',Iterable) #字符串是否可迭代 True
isinstance([1,2,3],Iterable) #list是否可迭代 True
isinstance(123,Iterable) #整数是否可迭代 True
带下标输出:
for i, value in enumerate(['A','B','C'])
print(i,value)
0 A 1 B 2 C
3.列表生成式
生成简单的list可以用 list(range(1,11)) 通用表达式为: [x for x in range(1,11)]
# 添加if判断: [x * x for x in range(1,11) if x % 2 ==0]
#两层循环:[m+n for m in 'abc' for n in 'xyz']
练习:判断list中元素是否为字符串,
L1 = ['Hello','World',18,'Apple',None]
L2 = [x.lower() for x in L1 if isinstance(x,str)]
print(L2)
4.生成器
通过列表生成式创建时,由于内存大小的限制,列表的容量是有限的。因此采用一边循环,一边计算的机制,也就是生成器(generator)
#创建一个生成器,将列表生成式中的[]改成()即可
L = [x * x for x in range(10)]
g = (x * x for x in range(10))
可以通过next()函数获得下一个返回值(不实用,一般通过for循环获取)
#斐波拉契数列函数
def fib(max):
n,a,b = 0,0,1
while n < max:
print(b)
a,b = b,a+b # t = (b,a+b) t为tuple a = t[0] b = t[1]
n = n+1
return 'done'
#斐波拉契数列生成器
def fib(max):
n,a,b = 0,0,1
while n < max:
yield b
a,b = b,a+b # t = (b,a+b) t为tuple a = t[0] b = t[1]
n = n+1
return 'done'
函数和生成器的执行流程不同,函数是顺序执行,遇到return语句或最后一行语句就返回。而生成器则是在每次调用next()时执行,遇到yield语句返回。再次执行时从上次返回的yield语句继续执行
5.迭代器
可用于for循环的对象称为可迭代对象 (有穷元素)
可以被next()函数调用并不断返回下一个值的对象称为迭代器 (Iterator) (无穷元素)
可迭代对象不是迭代器,但是可以通过iter()函数来进行转换
(可迭代对象就好比我们去饭店点餐,我们点的总是有限的。而迭代器就如同吃自助餐,我们手里只有一个盘子,每次也只能取一个食物。但食物的供应量相对来讲是无限的。同样的食物,从饭店拿到自助店就创造出了迭代器)
python高级篇的更多相关文章
- 第五篇:python高级之面向对象高级
python高级之面向对象高级 python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两 ...
- Python入门篇-封装与解构和高级数据类型集合(set)和字典(dict)
Python入门篇-封装与解构和高级数据类型集合(set)和字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.封装和结构 #!/usr/bin/env pytho ...
- 第九篇:python高级之操作数据库
python高级之操作数据库 python高级之操作数据库 本节内容 pymysql介绍及安装 使用pymysql执行sql 获取新建数据自增ID fetch数据类型设置 1.pymysql介绍及 ...
- 第八篇:python高级之多进程
python高级之多进程 python高级之多进程 本节内容 多进程概念 Process类 进程间通讯 进程同步 进程池 1.多进程概念 multiprocessing is a package ...
- 第七篇: python高级之多线程
21 interest=0.05 22 count=amount+amount*interest 23 24 self.withdraw(count) 25 26 27 def transfer(_f ...
- 第六篇:python高级之网络编程
python高级之网络编程 python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及 ...
- 第四篇:python 高级之面向对象初级
python 高级之面向对象初级 python 高级之面向对象初级 本节内容 类的创建 类的构造方法 面向对象之封装 面向对象之继承 面向对象之多态 面向对象之成员 property 1.类的创建 ...
- 第三篇:python高级之生成器&迭代器
python高级之生成器&迭代器 python高级之生成器&迭代器 本机内容 概念梳理 容器 可迭代对象 迭代器 for循环内部实现 生成器 1.概念梳理 容器(container ...
- 第一篇:python高级之函数
python高级之函数 python高级之函数 本节内容 函数的介绍 函数的创建 函数参数及返回值 LEGB作用域 特殊函数 函数式编程 1.函数的介绍 为什么要有函数?因为在平时写代码时,如果没 ...
随机推荐
- 关于RedisTemplate和StringRedisTemplate(转)
最近在开始在学习Redis以及如何在Java当中去使用Redis,Redis是什么我这里就不说了. 我主要想说的是Redis和Java当中Spring结合起来的时候,使用到的RedisTemplate ...
- 32. ClustrixDB License管理
一.许可的概述 ClustrixDB必须拥有有效的许可证才能运行.本授权指定: 集群中允许的最大节点数 ClustrixDB将使用的最大核数 在裸金属系统上,ClustrixDB将尝试启用与已授权的物 ...
- Linux系统启动顺序
Linux启动顺序 加电—加电自检(BIOS)—硬件检查 —MBR(找到需要启动的系统,由于实际计算机上可能会装有多个系统) —bootloader系统初始化,装载kenel到内存 —内核执行,决定哪 ...
- Linux—查看远程Linux系统运行时间
[选择题]在Shell环境下,如何查看远程Linux系统运行了多少时间? A.scp user@被监控主机ip "uptime" B.ssh user@被监控主机ip " ...
- Hibernate 5 Maven 仓库的 Artifacts
Hibernate artifacts 官方发布的仓库在 JBoss Maven repository 中.Hibernate 发布的 artifacts 也会同时同步到 Maven Central ...
- MessagePack Java Jackson 在不关闭输入流(input stream)的情况下反序列化多变量
com.fasterxml.jackson.databind.ObjectMapper 在读取输入流变量的时候默认的将会关闭输入流. 如果你不希望关闭输入流,你可以设置 JsonParser.Feat ...
- Centos 安装字体库 以及解决confluence 旧文档数据的乱码
首先,第一步我们需要执行以下的命令来安装字体管理工具: yum install -y fontconfig mkfontscale 然后我们到(Windows系统)“c:/windows/fonts ...
- [题解] [AtCoder2134] Zigzag MST
题面 题解 考虑kruscal的过程 对于三个点\(x, y, x + 1\), 我们可以将\((x, y, z), (y, x + 1, z + 1)\)看做\((x, y, z), (x, x + ...
- xcode6 如何编译64位iOS应用
原文:http://mobile.51cto.com/hot-412500.htm 随着iPhone5S的推出,大家开始关心5S上所使用的64位CPU A7. 除了关心A7的性能以外,大家还会关心一个 ...
- Java多线程深入理解
在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口. 对于直接继承Thread的类来说,代码大致框架是: ? 1 2 3 4 5 6 7 8 9 10 ...