在 Medium 上有篇叫《Python Tricks 101》的博文,介绍了一些不常见但很有用的 Python 技巧,集智进行了编译整理,原作者为 Gautham Santhosh。
交换值: />
从列表的所有元素中连接为一个字符串:
/>
找到列表中出现最频繁的值:
/>
检查两个英语单词是否为回文,即字母顺序互相颠倒:
/>
反转字符串:
/>
反转列表:
/>
转置2维数组:
/>
链式比较(Chained Comparison):
/>
链式函数调用(Chained function call):
/>
拷贝列表:
/>
按照字典的值进行排序:
/>
For else:
/>
将列表转为逗号分隔字符串:
/>
合并字典:
/>
列表中的最大和最小索引:
/>
移除列表中的重复项:
/>
另外再分享几个让 Python 代码更优雅的技巧:
Sorted() 接受关键字参数,可以用它为其它东西排序。
比如这里为一些英文姓氏排序:
>>> sorted(names, key=lambda name: name.split()[-1].lower())
['Ned Batchelder', 'David Beazley', 'Raymond Hettinger', 'Brian Jones']
将字典转为 XML
手动创建 XML 标签通常会很麻烦,可以用 dict_to_xml 帮我们转换:
from xml.etree.ElementTree import Element
def dict_to_xml(tag, d):
'''
Turn a simple dict of key/value pairs into XML
'''
elem = Element(tag)
for key, val in d.items():
child = Element(key)
child.text = str(val)
elem.append(child)
return elem"
用一行代码查看某个目录下是否有 Python 文件
有时候"any’还是很有用的:
import os
files = os.listdir('dirname')
if any(name.endswith('.py') for name in files):
用 set 操作来匹配列表中的常见项
>>> a = [1, 2, 3, 'a']
>>> b = ['a', 'b', 'c', 3, 4, 5]
>>> set(a).intersection(b)
{3, 'a'}
使用 re.compile
如果你想检查循环中的正则表达式,不要这么做:
for i in longlist:
if re.match(r'^...', i)
而是定义正则表达式,然后使用 re 模块:
p = re.compile(r'^...')
for i in longlist:
if p.match(i)
最后集智再分享两个 GitHub 资源,一个是叫 PyTricks 的项目,汇总了 Python 编程中不常见的技巧和功能,Medium 的这篇博文中有些技巧就来自这里:
另一个是叫 wtfpython 的项目,汇总了 Python 中一些不走寻常路的奇葩脚本和功能,还附有相应的解释:
可能你还喜欢: