Python Tricks and Tips(Continually updated)
最近在网上看到了一篇介绍python小技巧的英文文章,把它==翻译整理==到这里,方便以后自己查阅;同时,以后学习中遇到的一些python小技巧,我也会整理到这篇文章里。
原文地址:https://medium.com/better-programming/20-python-snippets-you-should-learn-today-8328e26ff124
记住一些python编程小技巧能够有助于我们的编码,同时也能节省一些搜索的时间。
Python Version: 3.5.2
- 反转字符串
通过切片操作实现字符串反转
1 | # 通过切片操作实现字符串反转 |
python中list的切片规则是[start, stop, step]
,那么[::-1]
就是:我们从开始到结束遍历整个list,同时遍历步长step
为-1
,遍历过程即为从位置[-1]
遍历到位置[-length - 1]
,这样保存下来的list,就是原来字符串的逆序。
2.将字符串转换为标题格式(每个单词首字母大写)
调用title()
方法即可
1 | my_string = "my name is chaitanya baweja" |
3.找到字符串中的唯一元素
我们可以利用以下的代码找到字符串中的唯一元素
1 | my_string = "aavvccccddddeee" |
python中的集合是一个无序的不重复元素序列,而join()
方法可以将字符串序列拼接起来。
4.打印字符串或者列表n次
我们可以使用*n
操作来打印字符串或列表n次,这种方法也能够用在初始化列表上。
1 | n = 3 # 重复次数 |
初始化长度为n的列表:
1 | new_list = [0] * n |
5.对列表元素操作(列表解析-list comprehension)
我认为这是python中一项非常优雅的操作,通过一行代码,我们就可以基于原有列表或是其他数据创建一个新的列表。
例如下例中,通过将列表中每个元素乘2,创建一个新的列表
1 | # 将列表中每个元素乘2 |
我们可以在列表解析中加入判断:
1 | old_list = [1, 2, 3, 4] |
上述代码将原列表中的偶数立方、奇数平方,生成了新的列表。
我们可以在列表解析过程中加入多个循环:
1 | a = [1, 2, 3, 4] |
上述一行代码生成了a
、b
两个列表间的笛卡尔积。
6.交换两个变量的值
相较于其他语言,python中变量值交换操作属实简单,对多个变量的赋值也很清晰:
1 | # 为a,b赋值 |
7.切分字符串(string->list)
通过调用.split()
方法实现对字符串的切分,通过传递参数,我们可以选择切分的分隔符:
1 | string_1 = "My name is Chaitanya Baweja" |
8.将字符串列表合并为字符串(list->string)
我们在3中介绍过使用join()
拼接字符串:
1 | list_of_strings = ['My', 'name', 'is', 'Chaitanya', 'Baweja'] |
9.判断字符串是否为回文串
我们已经介绍了反转字符串的方法,只需要判断反转后的字符串与原字符串是否相等即可:
1 | my_string = "abcba" |
10.列表中的元素频率
统计列表中元素出现的频率有很多方法,我们可以使用字典,也可以使用Counter
类。
Counter
类能够记录容器中每个元素的频率,它返回一个字典,字典中的键值对为:{元素:元素出现次数}
1 | # finding frequency of each element in a list |
11.判断两个字符串是否为同字母异构
这是Counter
类的奇妙应用之一,可以来判断某个字符串是否是重新调换另一个字符串字符位置而成
1 | from collections import Counter |
12.try-except-else代码块
在python中,可以通过try-except
代码块来处理异常。当没有异常发生时,我们可以通过增加一个else
代码块来继续执行代码;或者通过增加一个finally
代码块来忽略异常,继续执行:
1 | a, b = 1,0 |
13.调用Enumerate方法获取下标与元素值
我们可以通过Enumerate
方法在一次循环中同时获取元素下标与值:
1 | my_list = ['a', 'b', 'c', 'd', 'e'] |
14.查看对象的内存占用
1 | import sys |
15.合并字典
1 | dict_1 = {'apple': 9, 'banana': 6} |
16.统计代码执行时间
1 | import time |
17.将高维数组转换为一维
1 | from iteration_utilities import deepflatten |
我们还可以使用Numpy
库转换数组。
numpy.flatten(order='C')
方法:默认参数为’C’,’C’表示按行顺序优先转换;’F’是指列顺序优先转换;’A’是指,若列表在内存中连续存储,则按列顺序优先转换;反之,则按行顺序优先转换;’K’是指按列表元素在内存出现的顺序转换。
1 | a = np.array([[1,2], [3,4]]) |
18.从列表随机采样
1 | import random |
还可以调用secrets
库来生成随机样本:
1 | import secrets |
19.integer->list
1 | num = 123456 |
20.判断列表是否存在重复元素
基于列表生成集合,通过判断列表长度与集合长度是否相等,即可判断列表是否存在重复元素。
1 | def unique(l): |
21.自定义比较函数对列表排序
当我们想要用其他方式而不是数字大小顺序对列表排序时,我们可以通过cmp_to_key转换比较方式,下例中,我们将自定义函数传递给sorted()
函数:
1 | def custom_sort(nums) -> str: |
上述代码段能够按列表元素的平方大小进行排序。