python学习之高级特性:
切片:对列表、元组、字符串、字典取中间的一部分,在C中一般是通过for循环拷贝/memcpy/strcat等操作。而python提供了更方便的切片操作符[m:n]:前闭后开,如果从0取m可以省略;如果只用[:]就是切整片;也可以从尾端切片[-m:]:前后的闭区间。
列表生成式:List(range(m,n)):构造一个大于等于m小于n的列表;对于想生成复杂的列表要用列表生成式:[生成对象的模型, for 变量 in 可迭代的对象 附加条件表达式]
(1*1,2*2.。。且能被2整除的列表)方法有:最简单的方法:[x * x for x in range(1, 11) if x % 2 == 0 ] 或者
>>> L = []
>>> for x in range(1, 11):
if(if x % 2 == 0 ):
L.append(x )
其它复杂的生成式举例:
使用两个变量来生成 list:
>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> [k + '=' + v for k, v in d.items()]
['y=B', 'x=A', 'z=C']
把一个 list 中所有的字符串变成小写:
>>> L = ['Hello', 'World', 'IBM', 'Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']
迭代:对列表、元组、字符串、字典、生成器的遍历称为迭代,对任何可迭代的对象都可以用for循环:关于字典的迭代需要注意的是:默认是对键的迭代,如果要对值切片要用.value()的方法;要对键 和值同时迭代需要用到.item()的方 法:for k, v in d.items(): print(k,':',v) #‘:’是添加的连接符。
problem1: 如何判断一个对象是可迭代对象呢?方法是通过 collections 模块的 Iterable 类型判断:
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str 是否可迭代
problem2:如何对List的下标和元素同时迭代:答案是利用Python 内置的 enumerate 函数可以把一个 list 变成索引-元素对,这样就可以在 for 循环中同时迭代索引和元素本身:
>>> for i, value in enumerate(['A', 'B', 'C']):
... print(i, value)
...
0 A
1 B
2 C
生成器:产生背景:List可以产生大量的列表元素,但比较占存储空间,为了能推算后续结果又不想生成列表那么就可以用生成器了genarator
创建方法:方法一:将列表生成式的【】改成?();方法2 :用函数的方法+yied关键字
特点:1 当输入生成器不输出结果数据而只是说明生成器 2可以用next(生成器)递推出下一个结果直到StopIteration 错误或者for循环输出所有避免(StopIteration 错误);3函数式生成器每遇到yield就产生中断(关键字yield也称为一般函数和函数式生成 器的最基本区别,还有2点:调用后生成器不输出结果值,可以用next()函数)
迭代器:可表示无限大的数据流。能用for循环的对象都是可Iterable 迭代的(isinstance(对象, Iterable) 来判断),但不一定是迭代器Iterator (是否可next(迭代器对象),或用isinstance(对象, Iterator) 来判断是否是迭代器)判断是否是迭代器,通过iter(可迭代对象)将可迭代但不是迭代器 的转变为迭代器。
python学习之高级特性:的更多相关文章
- Python学习之高级特性
切片 在Python基础篇里,我们知道Python的可序列对象可以通过索引号(下标)来引用对象元素,索引号可以由0开始从左向右依次获取,可以从-1开始由右向左获取.这种方法可以帮助我们依次获取我们想要 ...
- Python面向对象编程高级特性
***这里还是根据网上资料,主要是廖雪峰老师的教程学习的笔记,主要介绍python面向对象的高级特性,笔记不全,只是记录自己觉得容易出错的地方*** 1.python作为一种动态语言,他的动态绑定机制 ...
- Python:笔记(4)——高级特性
Python:笔记(4)——高级特性 切片 取一个list或tuple的部分元素是非常常见的操作.Python提供了切片操作符,来完成部分元素的选取 除了上例简单的下标范围取元素外,Python还支持 ...
- Python的一些高级特性
内容基本上来自于廖雪峰老师的blog相当于自己手打了一遍,加强加强理解吧. http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493 ...
- python学习2—python3特性与各种运算符
python学习2—python3特性与各种运算符 python3与python2相比具有的新特性 在python2中可以使用__future__模块调用python3的特性 print()函数必须带 ...
- Python的一些高级特性以及反序列化漏洞
0x01 简述 文章主要记录一下python高级特性以及安全相关的问题 python作为脚本语言,其作为高级语言是由c语言开发的,关于python的编译和链接可以看向这里https://github. ...
- php面向对象编程学习之高级特性
前几天写了一篇关于php面向对象基础知识的博客,这两天看了php面向对象的高级特性,写出来记录一下吧,方便以后拿出来复习. 面向对象除了最基本的定义类之外,最主要就是因为面向的一些高级特性,运用这些高 ...
- Python学习之高级数组(一)
1.Python基础学习之高级数组(一) 1.1视图:就是与较大数组共享相同数据的较小数组.Numpy包提供数据视图的概念是为了精确地控制内存的使用方式. 数组视图.切片视图.转置和重塑视图等 数组 ...
- python:函数的高级特性
很多语言中,都允许把函数本身做为参数,传递给其它参数:即所谓的高阶函数.python中也有类似特性: 一.map/reduce.filter.sorted hadoop里的map-reduce思想在p ...
随机推荐
- 解决LoadRunner超时错误
在录制Web协议脚本回放时超时情况经常出现,产生错误的原因也有很多,解决的方法也不同. 错误现象1:Action.c(16): Error -27728: Step download timeout ...
- MySQL索引优化-from 高性能MYSQL
Btree: 1. 尽量使用覆盖索引, 即三星索引 2. 多列索引如果带范围的话, 后续列不会作为筛选条件 3. 多列索引应选择过滤性更好的充当前缀索引 4. 尽量按主键顺序插入, 减少页分裂, 采用 ...
- mysql批量sql插入优化
对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长.特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久.因此,优化数据库插入性能是很有意义的. ...
- cowboy中分布式节点通信
项目开发中,web前端节点需要与远端的聊天服节点通信.聊天服使用了otp,但我对otp下的分布式通信不太清楚,造成了一些问题. 1)首先是cowboy节点的命名.具体参数是配置在工程目录rel下的vm ...
- 机器学习: Canonical Correlation Analysis 典型相关分析
Canonical Correlation Analysis(CCA)典型相关分析也是一种常用的降维算法.我们知道,PCA(Principal Component Analysis) 主分量分析将数据 ...
- hihoCoser(#1149 : 回文字符序列)
时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定字符串,求它的回文子序列个数.回文子序列反转字符顺序后仍然与原序列相同.例如字符串aba中,回文子序列为"a& ...
- 使用memcpy 复制unsigned int 型的数据
转载请注明出处:http://blog.csdn.net/qq_26093511/article/details/53214692 函数原型: void *memcpy(void *dest, con ...
- libvirt kvm云主机监控
libvirt
- centos时区
执行:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime是将shanghai时区设置为系统时区 执行:date +%s 获取的是系统的utc时间戳 ...
- Hearthstone
题意: 有$n$个无中生有,有$m$个不同的杀,第$i$个杀掉$X_i$滴血,敌人血量$P$,求问第一回合就将敌人杀死的概率是多少. 解法: 二进制枚举$A$类,$B$类卡的顺序,这样就确定了取了几个 ...