没错我要Pythonic II

Pythonic

Posted by 淼淼淼 on August 29, 2018

Pythonic II


三元操作符

[表达式为真的返回值] if [表达式] else [表达式为假的返回值] x = (classA if y == 1 else classB)(param1, param2)

交互环境下的’_’操作符

Python 控制台,不论何时我们测试一个表达式或调用一个方法,结果都会分配给一个临时变量:_(一个下划线)

>>> 2+ 1
3
>>> _
3
>>> print_
3

简化if语句

我们可以使用下面的方式来验证多个值:

if m in [1,3,5,7]:

而非:

if m==1 or m==3 or m==5 or m==7:

或者,对于in操作符我们可以使用’{1,3,5,7}’而不是’[1,3,5,7]’

四种反转字符串/列表的方式

  • 翻转列表本身
testList = [1,3,5]
testList.reverse()
print(testList)
  • 在一个循环中翻转并迭代输出
for element in reversed([1,3,5]):
    print(element)
  • 一行代码翻转字符串
"Test Python"[::-1]
  • 使用切片翻转列表
[1,3,5][::-1]

在Python中使用枚举量

class Shapes:
    Circle,Square,Triangle,Quadrangle=range(4)

使用*运算符(splat operator) 来unpack函数参数

def test(x,y,z):
    print(x,y,z)

testDict = {'x':1,'y':2,'z':3}
testList = [10,20,30]

test(*testDict)
test(**testDict)
test(*testList)

x y z
1 2 3
10 20 30

找到列表中出现最频繁的数

test= [1,2,3,4,2,2,3,1,4,4,4]
print(max(set(test),key=test.count))
#-> 4

不适用循环构造一个列表

import itertools
test=[[-1,-2],[30,40],[25,35]]
print(list(list(itertools.chain.from_iterable(test)))
#-> [-1, -2, 30, 40, 25, 35]

在Python中实现一个真正的switch-case语句

def xswitch(x):
    return xswitch._system_dict.get(x,None)
xswitch._system_dict={'files': 10,'folders': 5,'devices': 2}
print(xswitch('devices'))

bye