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的更多相关文章

  1. A Byte of Python 笔记(12)python 标准库:sys、os,更多内容

    第14章 python 标准库 Python标准库是随Python附带安装的,它包含大量极其有用的模块. sys 模块 sys 模块包含系统对应的功能.如 sys.argv 列表包含命令行参数. # ...

  2. python笔记:学习设置Python虚拟环境+配置 virtualenvwarpper+创建Python3.6的虚拟环境+安装numpy

    虚拟环境它是一个虚拟化,从电脑独立开辟出来的环境.就是借助虚拟机docker来把一部分内容独立出来,我们把这部分独立出来的东西称作“容器”,在这个容器中,我们可以只安装我们需要的依赖包,各个容器之间互 ...

  3. python 笔记1:安装python;eclipse中安装配置pydev

    1  下载安装python. 官网:https://www.python.org/downloads/     根据自己的操作系统选择需要的版本下载并安装. 我的电脑操作系统windows xp的,只 ...

  4. devi into python 笔记(四)python的类

    import 与 from ... import ...: #types只是一个包,FunctionType只是这个包里的一个函数.这里用它来演示 import types #如果要用Function ...

  5. [Python笔记][第四章Python正则表达式]

    2016/1/28学习内容 第四章 Python字符串与正则表达式之正则表达式 正则表达式是字符串处理的有力工具和技术,正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串,主要用于字符串处理 ...

  6. [Python笔记][第三章Python选择与循环]

    1月28日学习 Python选择与循环 选择结构 多分枝选择结构 if 表达式 1: 语句块 1 elif 表达式 2: 语句块 2 elif 表达式 3: 语句块 3 ... else : 语句块 ...

  7. MOOC python笔记(二)python中的数据类型和基本语句

    python数据类型 数字类型 整数(int) 与数学中整数概念一致(数字大小没有限制,这和其他语言不同),整数可正可负,默认情况下,整数采用十进制.其他进制需要增加相应的引导符号. 如果是二进制在前 ...

  8. boost.python笔记

    boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...

  9. 【Python开发】C和Python之间的接口实现

    作者:Jerry Jho 链接:https://www.zhihu.com/question/23003213/answer/56121859 ## 更新:关于ctypes,见拙作 聊聊Python ...

  10. Python笔记之不可不练

    如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...

随机推荐

  1. 饭卡 HDU - 2546(dp)

    电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够).所以大家 ...

  2. 华东交通大学2018年ACM“双基”程序设计竞赛 D

      摸鱼之王MIKU酱想去埃及玩,需要一个人陪同.小新和小磊都想陪MIKU酱一起去,但名额只有一个.所以小磊和小新决定用一个小游戏来决定谁和MIKU酱出去玩.    游戏的道具是21张塔罗牌,塔罗牌分 ...

  3. codeforce830A. Office Keys

    A. Office Keys time limit per test: 2 seconds memory limit per test: 256 megabytes input standard: i ...

  4. 读取手机联系人,并用listview显示

    读取手机联系人,用到的就是一个contentprovider. 数据库里面有三张重要的表 raw_contact 里面有所有联系人的数据 data 每个联系人的所有数据 mime-type 每条数据的 ...

  5. Django基础之数据库与ORM

    一.数据库配置 1.django默认支持sqlite,mysql, oracle,postgresql数据库. django默认使用sqlite的数据库,默认自带sqlite的数据库驱动 , 引擎名称 ...

  6. centOS如何设置时间同步

     1.进入系统-管理-时间和日期  2.这个需要root权限才能进行设置,在弹出框中填入root密码  3.设置时间和日期-勾选同步,并且选择NTP时间服务器,点击确定 4.选择时区为亚洲上海点击保存 ...

  7. JAVA调用可执行程序或系统命令Runtime.getRuntime().exec

    用Java编写应用时,有时需要在程序中调用另一个现成的可执行程序或系统命令,这时可以通过组合使用Java提供的Runtime类和Process类的方法实现.下面是一种比较典型的程序模式: Proces ...

  8. 如何利用c++编写不能被继承、但可以在类外定义对象的类

    #include <iostream> #include<string> #include<map> #include<vector> #include ...

  9. CodeForces Round #521 (Div.3) B. Disturbed People

    http://codeforces.com/contest/1077/problem/B There is a house with nn flats situated on the main str ...

  10. 软件包管理rpm_yum

    和文本相关的命令cat 正向显示文本tac 反向显示文本more 可以一步一步显示文本文件less 还可以往上看.几个快捷键:j(往下看), k (往上看), g(定位最上), G(定位最下), ct ...