python实用30个小技巧

1.原地交换两个数字

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)那个(未被引用的)元组到变量 <x> 和 <y>。

一旦赋值完成,新的元组变成了未被引用状态并且被标记为可被垃圾回收,最终也完成了变量的交换。

2.链状比较操作符

比较操作符的聚合是另一个有时很方便的技巧:

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

3.使用三元操作符来进行条件赋值

三元操作符是 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]

4.多行字符串

基本的方式是使用源于 C 语言的反斜杠:

In [20]: multistr = " select * from multi_row \
    ...: where row_id < 5"

In [21]: multistr
Out[21]: ' select * from multi_row where row_id < 5'

另一个技巧是使用三引号

In [23]: multistr ="""select * from multi_row 
    ...: where row_id < 5"""

In [24]: multistr
Out[24]: 'select * from multi_row \nwhere row_id < 5'

上面方法共有的问题是缺少合适的缩进,如果我们尝试缩进会在字符串中插入空格。所以最后的解决方案是将字符串分为多行并且将整个字符串包含在括号中:

In [25]: multistr = ("select * from multi_row "
    ...: "where row_id < 5 " 
    ...: "order by age")  

In [26]: multis
  • 5
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值