列表——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 个 不同的元素 ,返回一个新的列表
原文地址:https://www.cnblogs.com/d1anlong/p/11868781.html