python2.7学习记录之二

一、高级特性

1.切片
取前3个元素用L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。如果第一个索引是0可省略。前10个数 每两个取一个L[:10:2],所有数 每5个取一个L[::5],原样复制[:]
Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

2.迭代
在Python中,迭代是通过for ... in来完成的,而很多语言比如C或者Java,迭代list是通过下标完成的。
如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断
>>> from collections import Iterable
>>> isinstance(‘abc‘, Iterable) # str是否可迭代
True
如果要对list实现类似Java那样的下标循环怎么办?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身
>>> for i, value in enumerate([‘A‘, ‘B‘, ‘C‘]):
...     print i, value

3.列表生成式
要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用range(1, 11)
要生成[1x1, 2x2, 3x3, ..., 10x10]可以用[x * x for x in range(1, 11)]
筛选出仅偶数的平方 [x * x for x in range(1, 11) if x % 2 == 0]
使用两层循环,可以生成全排列>>> [m + n for m in ‘ABC‘ for n in ‘XYZ‘]  结果: [‘AX‘, ‘AY‘, ‘AZ‘, ‘BX‘, ‘BY‘, ‘BZ‘, ‘CX‘, ‘CY‘, ‘CZ‘]
for循环其实可以同时使用两个甚至多个变量,比如dict的iteritems()可以同时迭代key和value>>> d = {‘x‘: ‘A‘, ‘y‘: ‘B‘, ‘z‘: ‘C‘ } >>> for k, v in d.iteritems(): ... print k, ‘=‘, v
内建的isinstance函数可以判断一个变量是不是字符串>>> isinstance(x, str)

L= [s.lower() if isinstance(s,str) else s for s in L]是condition expression
L= [s.lower() for s in L if isinstance(s,str) else s for s in L]是list comprehension
else 语法不是list comprehension中的,想要用else的话需要用condition expressions。

时间: 2024-10-20 14:18:34

python2.7学习记录之二的相关文章

webpack学习记录(十二)-区分不同环境

webpack学习记录(十二)-区分不同环境 定义全局变量 使用webpack内置的插件DefinePlugin 允许创建一个在编译时可以配置的全局常量. 用法 //在webpack.config.js中配置插件 new webpack.DefinePlugin({ PRODUCTION: JSON.stringify(true) }) //在index.js中使用定义的变量 if (!PRODUCTION) { console.log('Debug info') } if (PRODUCTIO

Theano学习记录(二) 多层感知机

Theano学习记录(一) 逻辑斯蒂回归 Experiment 1: 使用推荐的配置 learning_rate = 0.01 L1_reg = 0.00 L2_reg=0.0001 n_epoches=1000 batch_size=20 n_hidden=500 实验结果: 实验耗时: Experiment 2: 自己中间加入两个隐含层,分别为400 和 300 个节点.实验配置如下: learning_rate = 0.01 L1_reg = 0.00 L2_reg=0.0001 n_ep

redis入门学习记录(二)

继第一节 redis入门学习记录(一)之后,我们来学习redis的基本使用. 接下来我们看看/usr/local/redis/bin目录下的几个文件作用是什么? redis-benchmark:redis性能测试工具 redis-check-aof:检查aof日志的工具 redis-check-dump:检查rdb日志的工具 redis-cli:连接用的客户端 redis-server:redis服务进程 1.使用redis的客户端操作 我们现在往redis存储一个key = value  的数

我的tesseract学习记录(二)

前言:花了约三周看文档(打酱油),又花了两周搭环境,终于把tesseract用起来了,对简体中文的识别率还不错,在95%以上.现在简要记录一下安装.识别过程. 一.系统环境 系统:centos6.5 编译环境:g++ 依赖软件:leptonica.opencv2.4.9.tesseract3.02 二.安装过程 (1) leptonica sudo yum -y install autoconf automake libtool sudo yum -y install autoconf-arch

mysql 学习记录(二十五)--mysql日志

一.理论: 1.错误日志: a.记录了mysqld启动和停止时以及出错时的相关信息,当数据库出现故障导致无法启动时可以先查看此信息. b.可用--log-error来指定mysqld保存错误日志文件的位置 2.二进制日志: a.statement:记录的都是语句.优点:日志记录清晰易读.日志量少.对I/O影响较小,缺点:在某些情况下slave的日志复制会出错 b.row:将每一行的变更记录到日志中,而不是记录sql语句.优点:记录每一行的数据变化细节,不会出现某些情况下无法复制的情况,缺点:日志

Spring学习记录(十二)---AOP理解

Spring核心之二:AOP(Aspect Oriented Programming) --- 面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. 专业术语: Joinpoint(连接点): 所谓连接点是指那些被拦截到的点.在spri

【JSP】JSP基础学习记录(二)—— JSP的7个动作指令

2.JSP的7个动作指令: 动作指令与编译指令不同,编译指令是通知Servlet引擎的处理消息,而动作指令只是运行时的动作.编译指令在将JSP编译成Servlet时起作用:而处理指令通常可替换成JSP脚本,它只是JSP脚本. JSP动作指令主要有如下7个. jsp:forward:执行页面转向,将请求的处理转发到下一个页面. jsp:param:用于传递参数,必须与其他支持参数的标签一起使用. jsp:include:用于动态引入一个JSP页面. jsp:plugin:用于下载JavaBean或

C语言学习记录之二

各种语句及编程笔记记录 1.if & else #include<stdio.h> int main(){     int if (situation) {         //model; } else  {         //mode2; } prinf("?\n")     return 0; } 2.if & else(a>60) #include<stdio.h> int main() {     int a=100; if (

《Javascript高级程序设计》学习记录(二)

引用对象,由上一次的总结可以得出,基本类型有Number,Boolean,Undefined,String,Null,而引用类型也有许多种,现在介绍一些引用类型我个人觉得比较混淆的地方 (一)Object类型 (1)创建对象的方法有如下两种: 1:构造函数法:var person = new Person(); 在这里,虽然构造函数也是一种函数,但是我们在命名的时候,一般都是将构造函数的首字母大写,以和其他普通函数保持区别 2:对象字面量:如下所示: var person = { name =