Python教程,这8个实用技巧你一定要知道
8个实用小技巧
Python教程,这8个实用技巧你一定要知道
1、使用字典来存储选择操作
我们能构造一个字典来存储表达式:
In [70]: stdacl = {
...: 'sum':lambda x,y : x + y,
...: 'subtract':lambda x,y : x - y
...: }
In [73]: stdacl['sum'](9,3)
Out[73]: 12
In [74]: stdacl['subtract'](9,3)
Out[74]: 6
2、一行代码计算任何数的阶乘
python3环境:
In [75]: import functools
In [76]: result = ( lambda k : functools.reduce(int.__mul__,range(1,k+1),1))(3)
In [77]: result
Out[77]: 6
3、找到列表中出现最频繁的数
In [82]: test = [1,2,3,4,2,2,3,1,4,4,4]
In [83]: print(max(set(test),key=test.count))
4、重置递归限制
Python 限制递归次数到 1000,我们可以重置这个值:
import sys
x=1001
print(sys.getrecursionlimit())
sys.setrecursionlimit(x)
print(sys.getrecursionlimit())
#1-> 1000
#2-> 100
5、原地交换两个数字
Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例:
In [1]: x,y = 10 ,20
In [2]: print(x,y)
10 20
In [3]: x, y = y, x
In [4]: print(x,y)
20 10
赋值的右侧形成了一个新的元组,左侧立即解析(unpack)那个(未被引用的)元组到变量 和 。
一旦赋值完成,新的元组变成了未被引用状态并且被标记为可被垃圾回收,最终也完成了变量的交换。
6、链状比较操作符
比较操作符的聚合是另一个有时很方便的技巧:
In [5]: n = 10
In [6]: result = 1 < n < 20
In [7]: result
Out[7]: True
In [8]: result = 1 > n <= 9
In [9]: result
Out[9]: False
7、使用三元操作符来进行条件赋值
三元操作符是 if-else 语句也就是条件操作符的一个快捷方式:
[表达式为真的返回值] if [表达式] else [表达式为假的返回值]
这里给出几个你可以用来使代码紧凑简洁的例子。下面的语句是说“如果 y 是 9,给 x 赋值 10,不然赋值为 20”。如果需要的话我们也可以延长这条操作链。
x = 10 if (y == 9) else 20
同样地,我们可以对类做这种操作:
x = (classA if y == 1 else classB)(param1, param2)
在上面的例子里 classA 与 classB 是两个类,其中一个类的构造函数会被调用.
下面是另一个多个条件表达式链接起来用以计算最小值的例子:
In [10]: def small(a,b,c):
...: return a if a<=b and a<=c else ( b if b<=a and b<=c else c)
...:
In [11]: small(1,0,1)
Out[11]: 0
In [12]: small(1,2,3)
Out[12]: 1
我们甚至可以在列表推导中使用三元运算符:
In [14]: [ m**2 if m > 10 else m**4 for m in range(20) ]
Out[14]:
[0,1,16,81,256,625,1296,2401,4096,6561,10000,121,144,169,196,225,256,289,324,61]
8、检查一个对象的内存使用
在 Python 2.7 中,一个 32 比特的整数占用 24 字节,在 Python 3.5 中利用 28 字节。为确定内存使用,我们可以调用 getsizeof 方法:
python2.7:
import sys
x=1
print(sys.getsizeof(x))
#-> 24
python3:
In [86]: import sys
In [87]: x = 1
In [88]: sys.getsizeof(x)
Out[88]: 28