zoukankan      html  css  js  c++  java
  • 列表——list

    分类

    • 数值型

      • int 、float 、complex 、bool
    • 序列

      • 字符串 str 、bytes 、bytearray
      • 列表 list 、元祖tuple
    • 键值对

      • 集合set
      • 字典dict

    数值型

    • 数值型

      • int 、float 、complex 、bool 都是 class,1 、5.0 、2+3j 都是对象,即实例
      • int :Python3的 int 就是长整型,且没有大小限制,受限于内存区域的大小
      • float :由整数部分和小数部分组成。支持十进制和科学记数法表示。C 的双精度型实现
      • complex :有实数和虚数部分组成,实数和虚数部分都是浮点数,3+4.2J
      • bool :int 的子类,仅有 2 个实例 True 、False 对应 1 和 0 ,可以和整数直接运算
    • 类型转换(built-in)

      • int(x) 返回一个整数
      • float(x) 返回一个浮点数
      • complex(x) 、complex(x,y) 返回一个复数
      • bool(x) 返回布尔值 (False等价的对象)

    数字的处理函数

    • round() 四舍六入五取偶
    • math 模块
      • math.floor() 地板——向下取整
      • math.ceil() 天花板——向上取整
    • int() 截取整数部分
    • // 向下取整数
    ###  举例  ###
    
    print(int(-3.6), int(-2.5), int(1.4))
    > -3, -2, 1
    
    print(int(3.6), int(2.5), int(1.4))
    > 3, 2, 1
    
    print(7//2, 7//-2, -7//2,-(7//2))
    > 3, -4, -4, -3
    
    print(2//3, -2//3, -1//3)
    > 0, -1, -1
    
    print(round(2.5), round(2.5001), round(2.6))
    > 2, 3, 3
    
    print(round(3.5), round(3.5001), round(3.6), round(3.3))
    > 4, 4, 4, 3
    
    print(round(-2.5), round(-2.5001), round(-2.6))
    > -2, -3, -3
    
    print(round(-3.5), round(-3.5001), round(-3.6), round(-3.3))
    > -4, -4, -4, -3
    
    
    import math  #导入 math 模块
    print(math.floor(2.5), math.floor(-2.5))
    > 2, -3
    
    print(math.ceil(2.5), math.ceil(-2.5))
    > 3, -2
    
    • min()
    • max()
    • pow(x, y) 等于 x ** y
    • math.sqrt() 等于 x ** 0.5
    • 进制函数,返回值是字符串
      • bin() 二进制
      • oct() 八进制
      • dec() 十进制
      • hex() 十六进制
    • math.pi π
    • math.e 自如常数
    • math 模块中还有对数函数、三角函数等

    类型判断

    • type(obj) ,返回类型,而不是字符串
    • isinstance(obj, class_or_tuple) ,返回布尔值
    ###  举例  ###
    
    type(a)
    > str
    
    type('abc')
    > str
    
    type(123)
    > int
    
    isinstance(6, str)
    > False
    
    isinstance(str, bool, int)
    > ---------------------------------------------------------------------------
      TypeError                                 Traceback (most recent call last)
      <ipython-input-248-5f3aae754034> in <module>
      ----> 1 isinstance(str, bool, int)
    
      TypeError: isinstance expected 2 arguments, got 3
    
    type(1 + True)
    > int
    
    type(1 + True + 2.0)  #返回浮点数,隐式类型转换
    > float
    

    Python隐式类型转换只限数值型(int、float、complex、bool)


    列表list

    • 一个队列,一个排列整齐的队伍
    • 列表内的个体称作元素,由若干元素组成列表
    • 元素可以是任意对象(数字、字符串、对象、列表等)
    • 列表内元素有顺序,可以使用索引
    • 线性的数据结构
    • 使用 [ ] 表示
    • 列表是 可变

    列表list:是有序的、可变数据类型

    链表Linked list:在内存中不连续的分配

    栈stack:有序,后进先出LIFO,Last In First Out。例如一摞盘子,拿数据的时候会拿最上面的盘子

    队列queue:有序,先进先出FIFO,不能插入、删除


    列表list定义 初始化

    • list() -> new empty list
    • list(iterable) -> new list initalized from iterable’s items
    • 列表不能一开始就定义大小
    • 列表是容器,可以容纳其他元素对象

    列表索引访问

    • 索引,也叫下标

    • 正索引:从左至右,从 0 开始,为列表中每一个元素编号

    • 负索引:从右至左,从 -1 开始

    • 正、负索引不可以超界,否则引发异常 IndexError

    • 为了理解方便,可以认为列表是从左至右排列的,左边是头部,右边是尾部,左边是下界,右边是上界

    • 列表通过索引访问

      • list[index] , index 就是索引,使用中括号访问

    列表查询

    • index(value, [start, [stop]])
      • 通过value ,从指定区间查找列表内的元素是否匹配
      • 匹配第一个就立即返回索引
      • 匹配不到,抛出异常 ValueError
    • count(value)
      • 返回列表中匹配 value 的次数
    • 时间复杂度
      • index 和 count 方法都是 O(n)
      • 随着列表数据规模的增大,而效率下降

    列表元素修改

    • 索引访问修改
      • list[index] = value
      • 索引不要超界

    列表增加、插入元素

    • append(object) -> None

      • 列表尾部追加元素,返回None
      • 返回None就意味着没有新的列表产生,就地修改
      • 时间复杂度是 O(1)
    • insert(index, object) -> None

      • 在特定的索引 index 处插入元素 object
      • 返回 None就意味着没有新的列表产生,就地修改
      • 时间复杂度是 O(n)
      • 索引——超越上界,尾部追加;超越下界,头部追加
    • extend(iterable) -> None

      • 将可迭代对象的元素追加尽量,返回 None
      • 就地修改
    • + -> list

      • 连接操作,将两个列表连接起来
      • 产生 的列表,原列表不变
      • 本质上调用的是魔术方法 add() 方法
    • 星号 * -> list

    • 重复操作,将本列表元素重复 n 次,返回 的列表


    列表删除元素

    • remove(value) -> None

      • 从左至右查找第一个匹配 value 的值,找到就移除该元素,并返回 None , 否则 ValueError
      • 就地修改
      • 时间复杂度 O(n)
    • pop([index]) -> item

      • 不指定索引 index ,就从列表尾部弹出一个元素
      • 指定索引 index ,就从索引处弹出一个元素,索引超界抛出 IndexError 错误
      • 时间复杂度 O(n)
    • clear() -> None

      • 清除列表所有元素,剩下一个空列表

    列表其他操作

    • reverse() -> None

    • 将列表元素 反转 ,返回 None

    • 就地修改

    • sort(key=None, reverse = False) -> None

      • 对列表元素进行排序,就地修改,默认 升序
      • reverse 为 True ,反转,降序
    • key 一个函数,指定 key 如何排序

      • lst.sort(key=function)

    列表复制

    • copy() -> list
      • shadow copy 返回一个新的列表
    • shadow copy
      • 影子拷贝,也叫浅拷贝,遇到引用类型,只是复制了一个引用而已
        在这里插入图片描述
    • 深拷贝
      • copy 模块提供了 deepcopy

    随机数

    • random 模块
    • randint(a, b) 返回 [a, b] 之间的整数
    • choice(seq) 从非空序列的元素中随机挑选一个元素,比如 random.choice(range(10)) ,从 0 到 9 中随机挑选一个整数。random.choice([1, 3, 5, 7])
    • randrange([start, ],stop [,step]) 从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为 1 。random.randrange(1, 7, 2)
    • random.shuffle(list) -> 就地打乱列表元素
    • sample(population, k) 从样本空间或总体 (序列或者集合类型)中随机取出 k 个 不同的元素 ,返回一个新的列表
  • 相关阅读:
    docker 在线安装
    Malformed UTF-8 characters, possibly incorrectly encoded
    网页实时聊天之js和jQuery实现ajax长轮询
    windows下WNMP(win/nginx/mysql/PHP)环境phpstorm安装使用xdebug调试插件并配置通过postman调试接口
    github上给自己的项目添加Collaborators 现在改为manage access
    总结windows下单独配置php7,mysql8 ,nginx
    nginx 日本windows电脑系统下配置laravel
    如何让PhpStorm同时打开多个项目?(多项目并存的问题)
    02-STM32+W5500+AIR202基本控制篇-基本控制篇概述
    06-STM32+ESP8266+AIR202远程升级篇-移植使用-移植STM32主动访问升级到自己的工程项目
  • 原文地址:https://www.cnblogs.com/d1anlong/p/11868781.html
Copyright © 2011-2022 走看看