zoukankan      html  css  js  c++  java
  • 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}

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

  • 相关阅读:
    NPM (node package manager) 入门
    win10 环境 gitbash 显示中文乱码问题处理
    javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
    Javascript 的执行环境(execution context)和作用域(scope)及垃圾回收
    Centos 下 mysql root 密码重置
    执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二)
    Java I/O输入输出流详解
    反射---Java高级开发必须懂的
    细说Java多线程之内存可见性
    全面解析java注解
  • 原文地址:https://www.cnblogs.com/lvjianwei/p/4986358.html
Copyright © 2011-2022 走看看