Python3---元组、generator

元组

元组的概念

Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

  1. 元组,一旦创建,就没有任何方法可以修改元组中的元素(可变对象除外,因为可变对象内的值可以改变),只能使用del命令删除整个元组。
  2. Python内部实现对元组做了大量优化,访问和处理速度比列表快。
  3. 调用函数时使用元组传递参数可以防止在函数中修改元组,使代码更安全
  4. 元组可用作字典的键,而列表则永远都不可能当做字典键使用。

元组的创建

可以通过()tuple()来创建空元组,元组具有不可修改的特性
在这里插入图片描述

访问元组

元组可以使用下标索引来访问元组中的值
在这里插入图片描述

修改元组

元组中的元素值是不允许修改的,但可以对元组通过‘+’、‘*’进行连接组合。
注意如果
在这里插入图片描述

删除元组

元组中的元素值是不允许删除的,但可以使用del语句来删除整个元组。
在这里插入图片描述

关于元组的不可变

所谓的不可变指的是元组所指向的内存中的内容不可变。可以把元组看作不可变列表,也就是说元组里面的元素是不能随意改变的。但是,元组是可以接受一个可变对象------列表作为元素
在这里插入图片描述

元组内置函数

Python元组包含了以下内置函数

  1. cmp(tuple1,tuple2):比较两个元组元素
  2. len(tuple):计算元组元素个数
  3. max(tuple):返回元组中元素最大值
  4. min(tuple):返回元组中元素最小值
  5. tuple(seq):将列表转换为元组
    在这里插入图片描述

元组嵌套

在这里插入图片描述

循环遍历元组

在这里插入图片描述

元组与列表的异同

元组(tuple)和列表(list)非常相似,获取元素的方法和list是一样的,但是元组一旦初始化就不能修改,因而没有append(),insert()等方法。由于元组不可变性,所以代码更安全可靠。

generator

概念

  1. 生成器推导式的结果是一个生成器对象,而不是列表,也不是元组。
  2. 使用生成器对象的元素时,可以根据需要将其转化为列表或元组
  3. 可以使用__next__()或者内置函数访问生成器对象,但不管使用何种方法访问其元素,当所有元素访问结束以后,如果需要重新访问其中的元素,必须重新创建该生成器对象。即生成器的对象好比一碗饭,吃完了就没了,必须重新去盛饭。
  4. 生成器对象创建与列表推导式不同的地方是,生成器推导式是用圆括号创建的

操作

在这里插入图片描述

拓展

生成器在斐波那契数列的应用

  • 包含yield语句的函数可以用来创建可迭代的生成器对象
  • 生成器对象具有惰性求值的特点,只在需要时返回元素,比列表推导式具有更高的效率,尤其适合大量数据的遍历,因为列表数据比较多的时候会占用过多的内存,可能会导致MemoryError内存错误或者程序运行时出现卡顿的情况
  • 惰性求值就是延迟求值,表达式不会在它被绑定到变量之后就立即求值,而是等用到时再求值。因为在创建一个很大的生成器对象时,对内存的开销非常大,太大时python会直接报错,所以只在需要的时候才会返回元素
  • 而生成器使用__next__()来获取对象获取不到时会导致StopIteration异常错误,可以使用for循环来遍历生成器对象
    在这里插入图片描述
发布了32 篇原创文章 · 获赞 15 · 访问量 2463

猜你喜欢

转载自blog.csdn.net/weixin_44350891/article/details/104869539