美文网首页业务编程
Python那些相见恨晚的语法

Python那些相见恨晚的语法

作者: nextbang | 来源:发表于2017-01-20 22:51 被阅读6次

1.列表推导式

>>> {x: 10 * x for x in xrange(5)}
{0: 0, 1: 10, 2: 20, 3: 30, 4: 40}
>>> {10 * x for x in xrange(5) if x > 1}
set([40, 20, 30])

2.切片

>>> L = ['Michael', 'Sarah', 'Tracy']
>>> L[:3]
['Michael', 'Sarah', 'Tracy']
>>> L[1:3]
['Sarah', 'Tracy']
>>> L[-2:-1]
['Bob']

>>> L = list(range(100))
>>> L
[0, 1, 2, 3, ..., 99]
# 前10个数字,每2个取一个
>>> L[:10:2]
[0, 2, 4, 6, 8]
# 所有数,每5个取一个
>>> L[::5]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

3.生成器(斐波拉契数列)

# 著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到
def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        print(b)
        a, b = b, a + b
        n = n + 1
    return 'done'

#上面的队列转换为生成器,只需要把print(b)改为yield b即可
def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1
    return 'done'

4.递归(递归虽然运行效率比较低,但在对一些树形结构进行运算时,会非常方便)

# 计算阶乘 fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n
def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)

# 递归的计算过程
===> fact(5)
===> 5 * fact(4)
===> 5 * (4 * fact(3))
===> 5 * (4 * (3 * fact(2)))
===> 5 * (4 * (3 * (2 * fact(1))))
===> 5 * (4 * (3 * (2 * 1)))
===> 5 * (4 * (3 * 2))
===> 5 * (4 * 6)
===> 5 * 24
===> 120

5.lambda匿名函数

>>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
[1, 4, 9, 16, 25, 36, 49, 64, 81]

# lambda函数可代替下面函数定义
def f(x):
    return x * x

6.装饰器/闭包

# 一个能打印日志的decorator
def log(func):
    def wrapper(*args, **kw):
        print('call %s():' % func.__name__)
        return func(*args, **kw)
    return wrapper

# 调用方式
@log
def now():
    print('2015-3-25')

7.zip函数

>>> l = [[1, 2, 3], [4, 5, 6]]
>>> zip(*l)
[(1, 4), (2, 5), (3, 6)]

alist = ['a1', 'a2', 'a3']
blist = ['b1', 'b2', 'b3']
for a, b in zip(alist, blist):
  print a, b

8.map/filter/reduce

>>> map(lambda x:x*2, xrange(0,10))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>>> filter(lambda x:x%2==0, xrange(0,10))
[0, 2, 4, 6, 8]
>>> reduce(lambda x,y:x+y, xrange(0,10))
45

9.enumerate

>>> a = ['a', 'b', 'c', 'd', 'e'] 
>>> for index, item in enumerate(a): 
        print index, item 
        ... 
0 a 
1 b
2 c 
3 d 
4 e

10.接连比较

if a < b < c:
    pass

11.数值调换

x, y = y, x

12.defaultdict

>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
>>> d = defaultdict(list)
>>> for k, v in s:
        d[k].append(v)

>>> d.items()
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

相关文章

  • Python那些相见恨晚的语法

    1.列表推导式 2.切片 3.生成器(斐波拉契数列) 4.递归(递归虽然运行效率比较低,但在对一些树形结构进行运算...

  • Python从入门到精通

    Python语法的三个阶段 Python基础语法函数是编程 Python进阶语法面向对象编程 Python高级语法...

  • Python 10 个习惯

    Python 使用习惯是指那些经常被使用的语法、语义和结构,这样写更加符合 Python 风格(pythonic)...

  • Python玩转PDF文档,感受Python的强大!

    python作为一种具有相对简单语法的高级解释语言,即使对于那些没有编程经验的人来说,Python也是简单易操作的...

  • 来,教你用Python玩转PDF文档!

    python作为一种具有相对简单语法的高级解释语言,即使对于那些没有编程经验的人来说,Python也是简单易操作的...

  • python学习总结

    python基础语法总结 参考:Python基础语法总结 参考:1.Python标识符 在 Python 里,标识...

  • Python import语句导入模块语法

    Python import语句导入模块语法 源文档Python import语句导入模块语法python中的imp...

  • 08-Python3 错误和异常

    一、Python3 错误和异常 Python有两种错误很容易辨认:语法错误和异常。 语法错误 Python 的语法...

  • Python——控制语句和语法规则

    if语句 Python if语句是选取要执行的操作。 通用格式 Python语法规则 Python语法特性 语句是...

  • python基本常识

    Python的语法格式 Python是一种计算机编程语言,有着自己的一套语法格式。Python的语法格式非常简单,...

网友评论

    本文标题:Python那些相见恨晚的语法

    本文链接:https://www.haomeiwen.com/subject/yzawbttx.html