python笔记7:优雅的python
7. 如何让python代码更 Pythonic :
1、变量交换:
a, b = b, a
2、带有索引位置的集合遍历:
colors = ['red', 'green', 'blue', 'yellow']
for i, color in enumerate(colors):
print i, '--->', color
3、字符串连接:
names = ['raymond', 'rachel', 'matthew', 'roger','betty', 'melissa', 'judith', 'charlie']
print ', '.join(names)
注:使用 + 操作时,每次都会在内存中生成一个新的字符串对象,而 join 方法整个过程只产生一个字符串对象。
4、打开/关闭文件:
with open('data.txt') as f:
data = f.read()
注:使用 with 语句,系统会在执行完文件操作后自动关闭文件对象。
5、合理使用列表
from collections import deque
names = deque(['raymond', 'rachel', 'matthew', 'roger','betty', 'melissa', 'judith', 'charlie'])
names.popleft()#删除最左边元素
names.appendleft('mark')#在最左边添加新元素
注:列表list 是一种查询效率高于更新操作的数据结构,删除和插入新元素时效率很低,队列deque 是一个双向队列的数据结构,删除元素和插入元素会很快
6、序列解包:
p = 'vttalk', 'female', 30, 'python@qq.com'
name, gender, age, email = p
7、遍历字典的 key 和 value
for k, v in d.iteritems(): 注:iteritems 返回迭代器对象,在python3中只有 items 方法,等值于iteritems
print k, '--->', v
8、链式比较操作: if 18 < age < 60:
猜一猜:>>> False == False == True (答案为:False)
9、if/else 三目运算:
text = '男' if gender == 'male' else '女'
10、真值判断:
if attr: 等价于 if attr == True:
if values:(或 not values) 等价于 if len(values) != 0:(或 =0) # 判断列表是否为空
11、for/else语句
for else 是 Python 中特有的语法格式,else 中的代码在 for 循环遍历完所有元素之后执行
12、获取字典元素
d = {'name': 'foo'}
d.get("name", "unknow") #如果d有key=name,则获得其value,否则key=unknow
13、预设字典默认值
(场景:通过 key 分组的时候,不得不每次检查 key 是否已经存在于字典中。)
groups = {}
for (key, value) in data: #方式一,常用
groups.setdefault(key, []).append(value)
14、字典推导式
numbers = [1, 2, 3]
my_dict = {number: number * 2 for number in numbers if number > 1}
print(my_dict) # {2: 4, 3: 6}
15、。。。
python笔记7:优雅的python的更多相关文章
- A Byte of Python 笔记(12)python 标准库:sys、os,更多内容
第14章 python 标准库 Python标准库是随Python附带安装的,它包含大量极其有用的模块. sys 模块 sys 模块包含系统对应的功能.如 sys.argv 列表包含命令行参数. # ...
- python笔记:学习设置Python虚拟环境+配置 virtualenvwarpper+创建Python3.6的虚拟环境+安装numpy
虚拟环境它是一个虚拟化,从电脑独立开辟出来的环境.就是借助虚拟机docker来把一部分内容独立出来,我们把这部分独立出来的东西称作“容器”,在这个容器中,我们可以只安装我们需要的依赖包,各个容器之间互 ...
- python 笔记1:安装python;eclipse中安装配置pydev
1 下载安装python. 官网:https://www.python.org/downloads/ 根据自己的操作系统选择需要的版本下载并安装. 我的电脑操作系统windows xp的,只 ...
- devi into python 笔记(四)python的类
import 与 from ... import ...: #types只是一个包,FunctionType只是这个包里的一个函数.这里用它来演示 import types #如果要用Function ...
- [Python笔记][第四章Python正则表达式]
2016/1/28学习内容 第四章 Python字符串与正则表达式之正则表达式 正则表达式是字符串处理的有力工具和技术,正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串,主要用于字符串处理 ...
- [Python笔记][第三章Python选择与循环]
1月28日学习 Python选择与循环 选择结构 多分枝选择结构 if 表达式 1: 语句块 1 elif 表达式 2: 语句块 2 elif 表达式 3: 语句块 3 ... else : 语句块 ...
- MOOC python笔记(二)python中的数据类型和基本语句
python数据类型 数字类型 整数(int) 与数学中整数概念一致(数字大小没有限制,这和其他语言不同),整数可正可负,默认情况下,整数采用十进制.其他进制需要增加相应的引导符号. 如果是二进制在前 ...
- boost.python笔记
boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...
- 【Python开发】C和Python之间的接口实现
作者:Jerry Jho 链接:https://www.zhihu.com/question/23003213/answer/56121859 ## 更新:关于ctypes,见拙作 聊聊Python ...
- Python笔记之不可不练
如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...
随机推荐
- A1009 Product of Polynomials (25)(25 分)
A1009 Product of Polynomials (25)(25 分) This time, you are supposed to find A*B where A and B are tw ...
- OpenCV学习笔记(二) cv::Mat
部分内容转自:OpenCV Tuturial,ggicci 在OpenCV Tuturial中可查看Mat的初始化与打印方法. Mat本质上是由两个数据部分组成的类: 矩阵头(包含矩阵尺寸,存储方法, ...
- Redis实现之链表
链表 链表提供了高效的节点重排能力,以及顺序性的节点访问顺序,并且可以通过增删节点来灵活地调整链表的长度.作为一种常用数据结构,链表内置在很多高级的编程语言里面,因为Redis使用的C语言并没有内置这 ...
- 如何排查Java内存泄漏?看完我给跪了!
没有经验的程序员经常认为Java的自动垃圾回收完全使他们免于担心内存管理.这是一个常见的误解:虽然垃圾收集器做得很好,但即使是最好的程序员也完全有可能成为严重破坏内存泄漏的牺牲品.让我解释一下. 当不 ...
- 第一次接触php
一.什么是PHP PHP的中文意思:超文本预处理器,英文名字: HyperText Preprocessor. PHP通常有两层含义: (1)PHP是一个编程语言. (2)PHP是处理PHP编程语言的 ...
- leetcode 【 Trapping Rain Water 】python 实现
题目: Given n non-negative integers representing an elevation map where the width of each bar is 1, co ...
- leetcode 【 Search Insert Position 】python 实现
题目: Given a sorted array and a target value, return the index if the target is found. If not, return ...
- BMP图片的加载方式:资源 VS 文件
在程序中加载位图有很多方法,各有各的好处.这里简单说一下在资源里和文件里加载的区别. 第一.在资源里加载位图 这种方法就是在工程里的“资源视图”-->“添加资源”-->"Bitm ...
- linux环境搭建系列之jdk安装
JDK是java软件开发包的简称,要想开发java程序就必须安装JDK.没有JDK的话,无法编译Java程序. 前提: linux centOS6.6 64位操作系统 ROOT账号 安装包的获取:官网 ...
- 微信小程序-----校园头条详细开发之首页
1.首页展示功能的实现 1.1 结构 1.2 代码实现 1.2.1 界面的设计这里就不多说了,样式都是我自己写的,还有就是页面的跳转,看详细代码 var app = getApp() Page({ ...