30 个 Python 语言的特点技巧
1 介绍从我开始学习Python时我就决定维护一个经常使用的“窍门”列表。不论何时当我看到一段让我觉得“酷,这样也行!”的代码时(在一个例子中、在StackOverflow、在开源码软件中,等等),我会尝试它直到理解它,然后把它添加到列表中。这篇文章是清理过列表的一部分。如果你是一个有经验的Python程序员,尽管你可能已经知道一些,但你仍能发现一些你不知道的。如果你是一个正在学习Python的C、C++或Java程序员,或者刚开始学习编程,那么你会像我一样发现它们中的很多非常有用。 每个窍门或语言特性只能通过实例来验证,无需过多解释。虽然我已尽力使例子清晰,但它们中的一些仍会看起来有些复杂,这取决于你的熟悉程度。所以如果看过例子后还不清楚的话,标题能够提供足够的信息让你通过Google获取详细的内容。 |
|
列表按难度排序,常用的语言特征和技巧放在前面。 1.1 分拆 >>> a, b, c = 1, 2, 3 1.2 交换变量分拆 >>> a, b = 1, 2 1.3 拓展分拆 (Python 3下适用) >>> a, *b, c = [1, 2, 3, 4, 5] 1.4 负索引 >>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 1.5 列表切片 (a[start:end]) >>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 1.6 使用负索引的列表切片 >>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 1.7 带步进值的列表切片 (a[start:end:step]) >>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 1.8 负步进值得列表切片 >>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 1.9 列表切片赋值 >>> a = [1, 2, 3, 4, 5] 1.10 命名切片 (slice(start, end, step)) >>> a = [0, 1, 2, 3, 4, 5] 1.11 zip打包解包列表和倍数 >>> a = [1, 2, 3] 1.12 使用zip合并相邻的列表项 >>> a = [1, 2, 3, 4, 5, 6] >>> group_adjacent = lambda a, k: zip(*([iter(a)] * k)) >>> zip(a[::2], a[1::2]) >>> zip(a[::3], a[1::3], a[2::3]) >>> group_adjacent = lambda a, k: zip(*(a[i::k] for i in range(k))) 1.13 使用zip和iterators生成滑动窗口 (n -grams) >>> from itertools import islice 1.14 使用zip反转字典 >>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4} 1.15 摊平列表: >>> a = [[1, 2], [3, 4], [5, 6]] >>> sum(a, []) >>> [x for l in a for x in l] >>> a = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] >>> a = [1, 2, [3, 4], [[5, 6], [7, 8]]] 注意: 根据Python的文档,itertools.chain.from_iterable是首选。 1.16 生成器表达式 >>> g = (x ** 2 for x in xrange(10)) 1.17 迭代字典 >>> m = {x: x ** 2 for x in range(5)} >>> m = {x: 'A' + str(x) for x in range(10)} 1.18 通过迭代字典反转字典 >>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4} 1.19 命名序列 (collections.namedtuple) >>> Point = collections.namedtuple('Point', ['x', 'y']) 1.20 命名列表的继承: >>> class Point(collections.namedtuple('PointBase', ['x', 'y'])): 1.21 集合及集合操作 >>> A = {1, 2, 3, 3} 1.22 多重集及其操作 (collections.Counter) >>> A = collections.Counter([1, 2, 2]) 1.23 迭代中最常见的元素 (collections.Counter) >>> A = collections.Counter([1, 1, 2, 2, 3, 3, 3, 3, 4, 5, 6, 7]) 1.24 双端队列 (collections.deque) >>> Q = collections.deque() 1.25 有最大长度的双端队列 (collections.deque) >>> last_three = collections.deque(maxlen=3) 1.26 字典排序 (collections.OrderedDict) >>> m = dict((str(x), x) for x in range(10)) 1.27 缺省字典 (collections.defaultdict) >>> m = dict() 1.28 用缺省字典表示简单的树 >>> import json (到https://gist.github.com/hrldcpr/2012250查看详情) >>> import itertools, collections 1.30 最大最小元素 (heapq.nlargest和heapq.nsmallest) >>> a = [random.randint(0, 100) for __ in xrange(100)] 1.31 笛卡尔乘积 (itertools.product) >>> for p in itertools.product([1, 2, 3], [4, 5]): 1.32 组合的组合和置换 (itertools.combinations 和 itertools.combinations_with_replacement) >>> for c in itertools.combinations([1, 2, 3, 4, 5], 3): 1.33 排序 (itertools.permutations) >>> for p in itertools.permutations([1, 2, 3, 4]): 1.34 链接的迭代 (itertools.chain) >>> a = [1, 2, 3, 4] 1.35 按给定值分组行 (itertools.groupby) >>> from operator import itemgetter >>> print_data(data) >>> data.sort(key=itemgetter(-1)) |
http://www.oschina.net/translate/thirty-python-language-features-and-tricks-you-may-not-know
dd
30 个 Python 语言的特点技巧的更多相关文章
- 你可能不知道的 30 个 Python 语言的特点技巧
列表按难度排序,常用的语言特征和技巧放在前面. 1.1 分拆 >>> a, b, c = 1, 2, 3>>> a, b, c(1, 2, 3)> ...
- 你可能不知道的30个Python语言的特点技巧
1 介绍 从我开始学习Python时我就决定维护一个经常使用的“窍门”列表.不论何时当我看到一段让我觉得“酷,这样也行!”的代码时(在一个例子中.在StackOverflow.在开源码软件中,等等), ...
- 如何玩转Python? 一文总结30种Python的窍门和技巧
Python作为2019年必备语言之一,展现了不可替代作用.对于所有的数据科学工作者,如何提高使用Python的效率,这里,总结了30种Python的最佳实践.技巧和窍门.希望这些可以帮助大家在202 ...
- Python之几个技巧特点
今天偶然看到一篇文章<你可能不知道的30个Python语言的提点技巧>,虽然做python有几年了,但中间还是好多不知道或没想到,特在这里做下摘抄. 原文地址: http://soft.c ...
- 使用 Mypy 检查 30 万行 Python 代码,总结出 3 大痛点与 6 个技巧!
作者:Charlie Marsh 译者:豌豆花下猫@Python猫 英文:Using Mypy in production at Spring (https://notes.crmarsh.com/u ...
- Python语言防坑小技巧
Python语言防坑小技巧 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.赋值即定义 1>.运行以下代码会出现报错 #!/usr/bin/env python #_*_ ...
- [转] Python 代码性能优化技巧
选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...
- Python 代码性能优化技巧
选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...
- Python 语言基础
Python 语言基础 Python 开发环境 计算机组成 编程语言(计算机语言)是人们为了控制计算机,而设计的一种符号和文字的组合,从而实现向计算机发出指令. 形式是符号和文字的组合 目的是为了控制 ...
随机推荐
- DFS 10.1.5.253 1501
#include <iostream> using namespace std; #define N 20 int a[N][N],m[N],bz[N],n,s; void dfs(int ...
- Seek the Name, Seek the Fame - POJ 2752(next运用)
题目大意:小猫是非常有名气的,所以很多父母都来找它给孩子取名字,因为找的人比较多,小猫为了摆脱这个无聊的工作,于是它发明了一种取名字的办法,它把孩子父母的名字合在一起,然后从这个名字里面找一个前缀,并 ...
- E - Currency Exchange
题目大意: 汇率问题,有N个银行,他们之间有一些汇率,某个人手里面拿着其中一种钱,然后在这里面兑换钱币,当然兑换是有汇率和手续费的,然后经过一系列兑换后问手里面的钱是不是能增加? ;; i<le ...
- poj1323
题目大意: 预测游戏 假如有MR人,包括你自己,玩一个特殊的卡片游戏,开始的时候,没有参与者接收到N张卡片,这pip卡片是一个正整数最少M*N,没有两张pip卡片是一样的,在一圈后,每个玩家选择一张卡 ...
- Hibernate四 批量处理
Hibernate批量处理一 批量插入将很多条记录插入数据库时,Hibernate通常会采用以下做法:public void test() { for(int i=0;i<1000;i++){ ...
- Python中 os._exit() sys.exit() exit()区别
Python退出程序的方式有两种:os._exit(), sys.exit() 1)os._exit() 直接退出 Python程序,其后的代码也不会继续执行. 2)sys.exit() 引发一个 S ...
- Fiddler 抓包 教程
Fiddler的基本介绍 Fiddler的官方网站: www.fiddler2.com Fiddler官方网站提供了大量的帮助文档和视频教程, 这是学习Fiddler的最好资料. Fiddler是最 ...
- 重新启动linux上的tomcat
1.进入tomcat安装文件夹 2.cd bin 3../shutdown.sh 4../startup.sh
- rsyslogd配置文件详解
非常详细的rsyslogd配置文件解析 rsyslog服务和logrotate服务=========================================================== ...
- Memento 备忘录 快照模式
简介 定义: 在不破坏封装的前提下,捕获一个对象的[内部状态],并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态. 角色: 发起人Originator:要被备份的成员,它提供一创 ...