python-3高级特征
1-切片
L = ["qinzb",'fengyong','bingyan']
L[0:3] #截取从索引0开始到索引3结束(不包含索引3)
L[:3] #如果索引是从0开始则可省略
L[-1:] #获取最后1个元素 L = list(range(100)) #创建0-99数列
L[10:20] #[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
L[:10:2] #[0, 2, 4, 6, 8] 前10个数,每2个取一个:
L[:] #甚至什么都不写,只写[:]就可以原样复制一个list: #tuple也可以用切片操作
(0, 1, 2, 3, 4, 5)[:3] #(0, 1, 2) #字符串'xxx'也可以看成是一种list
'ABCDEFG'[:3] #'ABC'
#Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单
2-迭代
d = {'a':1, 'b':2, 'c':3}
for key in d:
print(key)
list = ['qinzb','fengyong','bingyan'];
for i,value in enumerate(list): #Python内置的enumerate函数可以把一个list变成索引-元素对
print(i,value)
for x, y in [(1, 1), (2, 4), (3, 9)]:
print(x, y)
from collections import Iterable
isinstance('abc', Iterable) # str是否可迭代, 返回True
3-列表生成式
list(range(1,11)) #生成1-11之间的整数
[x * x for x in range(1,11)] #生成[1x1, 2x2, 3x3, ..., 10x10]
[x * x for x in range(1, 11) if x % 2 == 0] #[4, 16, 36, 64, 100] 这样我们就可以筛选出仅偶数的平方:
[m + n for m in 'ABC' for n in 'XYZ'] #['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
3.2利用两个变量生成list
d = {'x':'A', 'y':'B', 'z':'C'}
for k,v in d.items():
print(k,'=',v)
[k+'='+v for k,v in d.items()] #同上面for方法,
3.3 使用案例
L = ['Hello', 'World', 'IBM', 'Apple']
[s.lower() for s in L] #注意L值不会变,返回值会变成小写 import os
print([d for d in os.listdir('c:\\')]) #列出C盘下所有文件夹和目录
#isinstance(x, str) 判断str是否为字符串,是返回True,否则返回False
4-生成器
比如,著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到:
1, 1, 2, 3, 5, 8, 13, 21, 34, ...
如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator:
def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b #print(b)
a, b = b, a + b
n = n + 1
return 'done' print(list(fib(6))) #打印出来
for n in fib(6):
print(n) #打印
5-迭代器
我们已经知道,可以直接作用于for循环的数据类型有以下几种:
一类是集合数据类型,如list、tuple、dict、set、str等;
一类是generator,包括生成器和带yield的generator function。
这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。
可以使用isinstance()判断一个对象是否是Iterable对象:
生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。
from collections import Iterable
isinstance([], Iterable) #是否可迭代 True
isinstance('abc', Iterable)#True
isinstance({}, Iterable)#True
isinstance((x for x in range(10)), Iterable) #True
isinstance(100, Iterable) #False
python-3高级特征的更多相关文章
- 进击的Python【第七章】:Python的高级应用(四)面向对象编程进阶
Python的高级应用(三)面向对象编程进阶 本章学习要点: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 一.面向对象高级语法部分 静态方法 ...
- 进击的Python【第六章】:Python的高级应用(三)面向对象编程
Python的高级应用(三)面向对象编程 本章学习要点: 面向对象编程介绍 面向对象与面向过程编程的区别 为什么要用面向对象编程思想 面向对象的相关概念 一.面向对象编程介绍 面向对象程序设计(英语: ...
- Python Flask高级编程之RESTFul API前后端分离精讲 (网盘免费分享)
Python Flask高级编程之RESTFul API前后端分离精讲 (免费分享) 点击链接或搜索QQ号直接加群获取其它资料: 链接:https://pan.baidu.com/s/12eKrJK ...
- 高级特征工程II
以下是Coursera上的How to Win a Data Science Competition: Learn from Top Kagglers课程笔记. Statistics and dist ...
- 进击的Python【第五章】:Python的高级应用(二)常用模块
Python的高级应用(二)常用模块学习 本章学习要点: Python模块的定义 time &datetime模块 random模块 os模块 sys模块 shutil模块 ConfigPar ...
- 进击的Python【第四章】:Python的高级应用(一)
Python的高级应用(一) 本章内容: 内置函数 生成器 迭代器 装饰器 JSON和PICKLE的简单用法 软件目录结构规范 一.内置函数 1.数学运算类 abs(x) 求绝对值1.参数可以是整型, ...
- Python的高级特性8:你真的了解类,对象,实例,方法吗
Python的高级特性1-7系列是本人从Python2过渡3时写下的一些个人见解(不敢说一定对),接下来的系列主要会以类级为主. 类,对象,实例,方法是几个面向对象的几个基本概念,其实我觉得很多人并不 ...
- Python的高级特性7:闭包和装饰器
本节跟第三节关系密切,最好放在一起来看:python的高级特性3:神奇的__call__与返回函数 一.闭包:闭包不好解释,只能先看下面这个例子: In [23]: def outer(part1): ...
- Python:高级主题之(属性取值和赋值过程、属性描述符、装饰器)
Python:高级主题之(属性取值和赋值过程.属性描述符.装饰器) 背景 学习了Javascript才知道原来属性的取值和赋值操作访问的“位置”可能不同.还有词法作用域这个东西,这也是我学习任何一门语 ...
- python的高级特性:切片,迭代,列表生成式,生成器,迭代器
python的高级特性:切片,迭代,列表生成式,生成器,迭代器 #演示切片 k="abcdefghijklmnopqrstuvwxyz" #取前5个元素 k[0:5] k[:5] ...
随机推荐
- #CSS的盒子模型、元素类型
CSS的盒子模型.元素类型 本文首先介绍了CSS元素的统一内部结构模型,盒子模型:然后介绍了CSS元素基于不同分类标准定义的元素类型,包括基于不同内容设置方式定义的replaced元素和non-r ...
- <Android 基础(八)> Palette
介绍 Palette, 英文翻译,调色板,意思比较接近,Google给它的定位应该是颜色萃取器. 看下Source Code Palette , A helper class to extract p ...
- (C#) 线程之 AutoResetEvent, EventHandle.
AutoResetEvent 允许线程通过发信号互相通信.通常,此通信涉及线程需要独占访问的资源. 线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号.如果 AutoRese ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(9)、空间数据的容器-地图MapView
1.前言 在上一篇内容里介绍了 关于ArcGIS Android开发的未来(“Quartz”版Beta)相关内容,期间也提到了关于API接口的重构,开发思路的调整,根据2015UC资料也可以知道新版预 ...
- ansible使用7-Loops
Standard Loops with_items - name: add several users user: name={{ item }} state=present groups=wheel ...
- MySQL的prompt不生效的问题
安装完MySQL之后,使用了自定义的配置文件来启动MySQL,发现配置在[mysql]中的prompt并没有生效 [root@MySQL56_L1 ~]# /usr/local/mysql/bin/m ...
- 笨办法学Python(二十九)
习题 29: 如果(if) 下面是你要写的作业,这段向你介绍了“if语句”.把这段输入进去,让它能正确执行.然后我们看看你是否有所收获. people = 20 cats = 30 dogs = 15 ...
- 笨办法学Python(二十二)
习题 22: 到现在你学到了哪些东西? 这节以及下一节的习题中不会有任何代码,所以也不会有习题答案或者加分习题.其实这节习题可以说是一个巨型的加分习题.我将让你完成一个表格,让你回顾你到现在学到的所有 ...
- 1 - python3基础语法
编码 默认情况下,Python 3 源码文件以 UTF-8 编码.当然你也可以为源码文件指定不同的编码: # _*_ coding:utf-8 _*_ 保留字 Python的标准库提供了一个keywo ...
- 第41章 RS-485通讯实验—零死角玩转STM32-F429系列
第41章 RS-485通讯实验 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...