• Head Frist Python 读书笔记 第五章 处理数据


    Bullet Option:

    • sort(*, key=None, reverse=None)

    sort方法用于原地排序,可以接收两个keyword-only参数,并且此方法是的排序是稳定的。

    key:一个表达式,比较时会根据该表达式的计算结果进行排序

    reverse:默认False,升序排列;True,降序排列

    默认使用升序排列

    >>> source=[5,2,8,4,3,6,7]
    >>> source.sort()
    >>> print(source)
    [2, 3, 4, 5, 6, 7, 8]

    reverse=True,使用降序排列

    >>> source=[5,2,8,4,3,6,7]
    >>> source.sort(reverse=True)
    >>> print(source)
    [8, 7, 6, 5, 4, 3, 2]

    key用于输入计算权重的方法,排序会按照权重排序,而不是按照原值排序

    >>> def cal_priority(target):
        return 0-target
    
    >>> source=[5,2,8,4,3,6,7]
    >>> result=[cal_priority(item) for item in source]
    >>> print(result)
    [-5, -2, -8, -4, -3, -6, -7]
    >>> source.sort(key=cal_priority)
    >>> print(source)
    [8, 7, 6, 5, 4, 3, 2]
    • sorted(iterable[, key][, reverse])

    sorted()方法与sort()方法类似,不过前者会返回一个新的列表,原列表不会有影响。

    • 列表推导

    列表推导是非常有趣的一个功能,在前面sort()方法中就已经使用到了,简洁的语法可以在使用中节省不少代码。

    >>> def cal_priority(target):
        return 0-target
    
    >>> source=[5,2,8,4,3,6,7]
    >>> result=[cal_priority(item) for item in source]
    >>> print(result)
    [-5, -2, -8, -4, -3, -6, -7]

    通过语法结构也可以很清晰的了解是怎么做的,整体的阅读方向是从右向左:

    首选一对“[]”说明这个会返回一个列表,其中的“for item in source”说明需要对一个目标列表进行循环操作,“cal_priority(item)”表示要对这个循环中的每个数据怎么计算。

    • 分片

    分片也是有效节省代码的方法,简单的“:”就可以轻松筛选出列表中指定部分,甚至可以轻松的复制列表

    list[m:n]表示返回列表第m个位置到第n个位置的列表项,但不包括第m个位置,如果m、n为空,则返回原列表的拷贝

    >>> source=[1,2,3,4,5,6]>>> print(source[2:5])
    [3, 4, 5]
    >>> result=source[:]
    >>> print(result)
    [1, 2, 3, 4, 5, 6]
    >>> result=[]
    >>> print(source)
    [1, 2, 3, 4, 5, 6]
    • class set([iterable])

    看了文档才发现,其实这是个class,而不是一个方法OTZ。集合类的一个应用场景就是去重,效果立竿见影。

    除了去重这个,集合本身也是很有趣的数据结构,可是实现很多有意思的功能。

    python中还有一种叫做class frozenset([iterable])的集合类型,顾名思义,frozenset是被冻住的,不能修改其中的数据。

    >>> source=[5,5,7,2,8,4,3,4,6,7]
    >>> sourceset=set(source)
    >>> print(sourceset)
    {2, 3, 4, 5, 6, 7, 8}

    为什么输出是排序过的,重复了好多次都是这样???

  • 相关阅读:
    MySQL架构优化:定时计划任务与表分区
    关于mysql 删除数据后物理空间未释放(转载)
    Mysql删除数据后磁盘空间未释放的解决办法【转】
    Mysql 自动备份脚本
    迄今最安全的MySQL?细数5.7那些惊艳与鸡肋的新特性(上)【转载】
    Redis学习笔记(二)-key相关命令【转载】
    干货分享:MySQL之化险为夷的【钻石】抢购风暴【转载】
    Apache 实现ProxyPass转发URL到Tomcat并实现http自动转https【转载】
    业务零影响!如何在Online环境中巧用MySQL传统复制技术【转】
    VNC轻松连接远程Linux桌面
  • 原文地址:https://www.cnblogs.com/lvjianwei/p/4986358.html
Copyright © 2020-2023  润新知