美文网首页
fluent python 1

fluent python 1

作者: 海街diary | 来源:发表于2018-02-01 12:49 被阅读5次

    1 用*来获取不确定数量的参数

    用*来获取不确定数量的参数

    >>> a, b, *c = range(5)
    >>> a, b, c
    (0, 1, [2, 3, 4])
    

    2 用*运算符来把一个可迭代对象的参数拆开作为函数的参数

    用*运算符来把一个可迭代对象的参数拆开作为函数的参数

    >>> divmod(20, 8)
    (2, 4)
    >>> t = (20, 8)
    >>> divmod(*t)
    (2, 4)
    

    3 具名元组

    定义和使用具名元组需要两个参数,一个是类名,一个是类的各个字段的名字,另一个是由多个字符串组成的可迭代对象,或者由空格分隔开的字段名组成的字符串

    >>> from collections import namedtuple
    >>> # 字符串的可迭代
    >>> Card = namedtuple('Card', ['rank', 'suit'])
    >>> # 空格分隔的字符串
    >>> City = namedtuple('City', "name country population coordinates")
    >>> tokyo = City("tokyo", "JP", 36.93, (35.69, 139.69))
    >>> tokyo.country
    'JP'
    >>> tokyo.coordinates
    (35.69, 139.69)
    >>> tokyo[0]
    'tokyo'
    >>> City._fields
    ('name', 'country', 'population', 'coordinates')
    

    4 直接交换变量

    python 交换变量,无需中间变量

    >>> a, b = (1, 2)
    >>> b, a = a, b
    >>> a, b
    (2, 1)
    

    5 对对象进行切片

    s[a:b:c]在a与b之间每隔c取值,c可以是负值

    >>> s = "hello, world!"
    >>> s[::3]
    'hl r!'
    >>> s[::-1]
    '!dlrow ,olleh'
    

    6 对序列使用+和*

    对序列使用+和*对会创建新序列,而不修改原来的序列

    >>> a = [1, 2, 3]
    >>> a * 3
    [1, 2, 3, 1, 2, 3, 1, 2, 3]
    >>> a
    [1, 2, 3]
    

    7 bisect来管理有序序列

    bisect(haystack, needle)返回插入的位置, insort(seq, item)进行插入操作

    >>> import bisect
    >>> import random
    >>> a = [1, 48, 12, 34, 4, 8]
    >>> a = sorted(a)
    >>> a
    [1, 4, 8, 12, 34, 48]
    >>> bisect.bisect(a, 5)
    2
    >>> bisect.insort(a, 5)
    >>> a
    [1, 4, 5, 8, 12, 34, 48]

    相关文章

      网友评论

          本文标题:fluent python 1

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