一、 元组与列表的区别

  • 元组中的数据一旦定义就不允许更改。
  • 元组没有append()、extend()和insert()等方法,无法向元组中添加元素。
  • 元组没有remove()或pop()方法,也无法对元组元素进行del操作,不能从元组中删除元素。
  • 从效果上看,tuple()冻结列表,而list()融化元组。
  • 元组的速度比列表更快。如果定义了一系列常量值,而所需做的仅是对它进行遍历,那么一般使用元组而不用列表。
  • 元组对不需要改变的数据进行“写保护”将使得代码更加安全。
  • 元组可用作字典键(特别是包含字符串、数值和其它元组这样的不可变数据的元组)。列表永远不能当做字典键使用,因为列表不是不可变的。

序列解包

  • 可以使用序列解包功能对多个变量同时赋值:
x, y, z = 1, 2, 3
>>> print(x, y, z)
1 2 3
  • 可以对range对象进行序列解包:
x, y, z = range(3)
>>> print(x, y, z)
0 1 2
  • 使用迭代器对象进行序列解包
x, y, z = iter([1, 2, 3])
  • 使用可迭代的map对象进行序列解包
x, y, z = map(str, range(3))
>>> print(x, y, z)
0 1 2
  • 交换两个变量的值
a, b = b, a
  • sorted()函数返回排序后的列表
x, y, z = sorted([1, 3, 2])
  • 字符串也支持序列解包
a, b, c = 'ABC'
  • 序列解包对于列表和字典同样有效
s = {'a':1, 'b':2, 'c':3}
b, c, d = s.items()
>>> b
('a', 1) #使用字典时不用太多考虑元素的顺序
b, c, d = s
>>> b
'a'
b, c, d = s.values()
>>> print(b, c, d)
1 2 3

生成器推导式

生成器推导式的结果是一个生成器对象。使用生成器对象的元素时,可以根据需要将其转化为列表或元组,也可以使用生成器对象__next__()方法或内置函数next()进行遍历,或者直接将其作为迭代器对象来使用。

生成器对象具有惰性求值的特点,只在需要时生成新元素,比列表推导式具有更高的效率,空间占用非常少,尤其适合大数据处理的场合。

不管用哪种方法访问生成器对象,都无法再次访问已访问过的元素。

g = ((i+2)**2 for i in range(10))
>>> g
<generator object <genexpr> at 0x0000011B65812570> a_tuple = tuple(g)
>>> a_tuple
(4, 9, 16, 25, 36, 49, 64, 81, 100, 121) g = ((i+2)**2 for i in range(10))
aList = list(g)
>>> aList
[4, 9, 16, 25, 36, 49, 64, 81, 100, 121] #使用生成器对象__next__()方法或内置函数next()进行遍历
g = ((i+2)**2 for i in range(10))
#使用生成器对象的__next__()方法获取元素
>>> g.__next__()
4
>>> g.__next__()
9
>>> next(g)
16

在python中元组与列表的区别及序列解包的更多相关文章

  1. python中元组、列表、字典、集合知识

    像列表一样处理字符串: 仅需要看字符串的首字符就知道如何处理该字符串的情况也很常见.例如,如果有一个姓与名的列表,您可以使用与列表相同的语法查看名与姓的第一个字符.这种看待字符串的方法叫做分片(sli ...

  2. python中元组与数组的区别

    列表: a=['12', '3rr'] 元组: t=(21,34) 列表可以修改,而元组不可以修改,如果元组中仅有一个元素,则要在元素后加上逗号. 元组和列表的查询方式一样. 元组只可读不可修改. 如 ...

  3. Python中元组、列表、字典的遍历和相互转化

    一.元组,列表,字典的遍历 1.1 元组的遍历 元组的遍历借助 range() 函数,基本思想是通过元组的长度使用for循环进行遍历,代码如下:     fruits=("apple&quo ...

  4. python接口自动化(九)--python中字典和json的区别(详解)

    简介 这篇文章的由来是由于上一篇发送post请求的接口时候,参数传字典(dict)和json的缘故,因为python中,json和dict非常类似,都是key-value的形式,为啥还要这么传参,在群 ...

  5. Python中元组,列表,字典的区别

    http://blog.csdn.net/yasi_xi/article/details/38384047

  6. Python中元组和列表

    一.list列表的操作包括以下函数: 列表操作包括以下函数: 1.cmp(list1,list2) :比较两个列表的元素 2.len(list) :列表元素个数 3.max(list) :返回列表元素 ...

  7. python中的括号以及元组和列表的区别

    1 python中的括号 1.1 花括号 花括号表示的是字典,即键值对. 1.2 方括号 方括号表示的是列表,类似于数组,但是可以允许存放混杂类型的数据. 1.3 圆括号 圆括号表示的是元组,类似于列 ...

  8. python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍

    目录 python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍.md 一丶字典 1.字典的定义 2.字典的使用. 3.字典的常用方法. python学习第八讲,python ...

  9. Python中生成器和迭代器的区别(代码在Python3.5下测试):

    https://blog.csdn.net/u014745194/article/details/70176117 Python中生成器和迭代器的区别(代码在Python3.5下测试):Num01–& ...

随机推荐

  1. Httprunner初步学习

    一:简介 一直在技术博客上看到Httprunner测试框架,但始终不太明白这个框架的具体作用,今天就花点时间来初步学习了解一下. HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架, ...

  2. C++基础知识篇:C++ 基本语法

    C++ 基本语法 C++ 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互.现在让我们简要地看一下什么是类.对象,方法.即时变量. 对象 - 对象具有状态和行为.例如:一只狗的状态 - 颜 ...

  3. CentOS6.5配置KVM

    ///确认cpu是否支持kvm egrep '(vmx|svm)' --color=always /proc/cpuinfo ///安装包 yum -y install qemu-kvm libvir ...

  4. CentOS 7下安装Docker

    安装一些必要的系统工具: sudo yum install -y yum-utils device-mapper-persistent-data lvm2 添加软件源信息: sudo yum-conf ...

  5. 【GDKOI2014】JZOJ2020年8月13日提高组T2 石油储备计划

    [GDKOI2014]JZOJ2020年8月13日提高组T2 石油储备计划 题目 Description Input Output 对于每组数据,输出一个整数,表示达到"平衡"状态 ...

  6. 详解Hadoop3.x新特性功能-HDFS纠删码

    文章首发于微信公众号:五分钟学大数据 EC介绍 ​Erasure Coding 简称EC,中文名:纠删码 EC(纠删码)是一种编码技术,在HDFS之前,这种编码技术在廉价磁盘冗余阵列(RAID)中应用 ...

  7. springmvc<二> 一些配置

    1.1.3. Web MVC Config    1.1.2中的解析器可以自定义实现,DispatcherServlet检查每个特殊bean的WebApplicationContext,如果没有匹配的 ...

  8. Qt中,将以png为格式的图片在按钮控件上显示

    在Qt编程中,我们常常会遇见这样或那样的小问题,这里,我介绍一个将png为格式的图片在按钮控件上显示的小功能. resistanceBtn = new QPushButton(element); re ...

  9. 转:【Python3网络爬虫开发实战】3.1.2-处理异常

    [摘要] 前一节我们了解了请求的发送过程,但是在网络不好的情况下,如果出现了异常,该怎么办呢?这时如果不处理这些异常,程序很可能因报错而终止运行,所以异常处理还是十分有必要的. urllib的erro ...

  10. PyQt(Python+Qt)学习随笔:键盘焦点和逻辑焦点(Logic Focus与Keyboard Focus )

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 Qt中的焦点有键盘焦点和逻辑焦点(Logic Focus与Keyboard Focus )的区分,键 ...