精华内容
下载资源
问答
  • 主要介绍了简单了解python列表和元组的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 列表 VS 元组一个 Python 初学者的普遍疑问:列表元组的区别是什么?答案是:它们之间有两点不同,并且二者之间有着复杂的相互作用。它们分别是”技术上”的差异“文化上”的差异。首先,有一点是相同的:列表与...

    列表 VS 元组

    一个 Python 初学者的普遍疑问:列表与元组的区别是什么?

    答案是:它们之间有两点不同,并且二者之间有着复杂的相互作用。它们分别是”技术上”的差异和“文化上”的差异。

    首先,有一点是相同的:列表与元组都是容器,是一系列的对象。

    二者都可以包含任意类型的元素甚至可以是一个序列,还可以包含元素的顺序(不像集合和字典)。

    现在来讲讲区别。列表和元组的“技术差异”是,列表是可变的,而元组是不可变的。这是在 Python 语言中二者唯一的差别。

    尽管有好几种表现方式,但这是列表和元组唯一的“技术差异”。比如:列表有一个 append() 的方法来添加更多的元素,而元组却没有这个方法:

    元组并不需要一个 append() 方法,因为元组不能修改。

    “文化差异“是指二者在实际使用中的差异:在你有一些不确定长度的相同类型队列的时候使用列表;在你提前知道元素数量的情况下使用元组,因为元素的位置很重要。

    举个例子,假设你有一个函数是用来在目录中查找结尾为 *.py 的文件。函数返回的应该是一个列表,因为你并不知道你会找到多少个文件,而这些文件都有相同的含义:它们仅仅是你找到的另一个文件。

    另一方面,让我们假设你需要存储五个值来代表气象观测站的位置:id ,城市,国家,纬度,经度。元组就比列表更适用于这种情况:

    (让我们暂时不要讨论使用类来表示的这种情况)。第一个元素是 id ,第二个元素是城市,等等。位置决定了它的意义。

    把这种“文化差异”放到 C 语言来讲,列表像是数组,元组则像是 structs 结构体。

    Python 采用了命名元组的方法来使含义更加明确:

    对元组和列表之间“文化差异”的一个总结是:元组是不需要名字的命名元组。

    “技术差异”和“文化差异”这种区分也并不准确,因为有时候他们并不稳定。为什么同种元素的序列可变,而不同元素的序列不可变呢?举个例子,我不能修改我的气象站,因为命名元组是不可变的元组。

    有时技术考量要比文化考量重要。比如你不能把列表当做字典的关键字,因为只有不可变的值才能进行哈希运算,因此只有不可变的值才能作为关键字。要使用列表做关键字,你需要把它转化为元组:

    技术和文化的另一个冲突是:在 Python 中元组使用的地方,列表也起着重要作用。当你定义一个带参函数,元组作为参数传入,即使这个值的位置并不显著,至少 Python 知道这是一个元组。你可能会说这是个元组因为你不能改变被传进来的值,但这只是重视了技术上的差异而非文化上的差异。

    我知道:在参数数组中,位置很重要,因为他们是位置参数。但是在函数中,它会接收参数数组并传入另一个函数,它仅仅是一组参数,与其他参数并无不同。其中一些会在调用中变化。

    Python 之所以在这里使用元组是因为元组比列表更节省空间。列表被重复分配使得在添加元素上更快。这体现了 Python 的实用性:相比于在参数数组上,列表/元组的语义差别,在这种情况下,使用这种数据结构更好。

    大部分情况下,你应该根据文化差异来选择使用列表还是元组。思考下你数据的含义。如果实际上根据你的程序来计算,你的数据长度并不固定,那么可能用列表更好。如果在写代码时你知道第三个元素的含义,那么用元组更好。

    另一方面,函数式编程强调使用不可变的数据结构来避免产生使代码变得更难解读的副作用。如果你喜欢使用函数式编程,那么你可能因为元组的不可变而更喜欢它们。

    那么:你应该用元组还是列表?答案是:永远没有一个简单的答案。

    展开全文
  • 元组不可变(这里不可变是指元组元素数据地址不变,当元组元素为列表/字典类型时,这个元素值是可以改变,不变是元素地址); 是可迭代; 存储同样数据,比列表占用更少空间; 原子性tuple可以...

    元组:

    1. 元组不可变(这里的不可变是指元组元素的数据地址不变,当元组元素为列表/字典类型时,这个元素值是可以改变的,不变的是元素地址);
    2. 是可迭代的;
    3. 存储同样的数据,比列表占用更少的空间;
    4. 原子性的tuple可以作为字典的键;
    5. 可以拆包处理,当作函数的参数传递a=(1,2)   func(*a);
    6. 两个元组是可以做加法的哦(1,2,3)+(4,5,6);

    列表:

    1. 列表可变,可以使用insert、append等操作;
    2. 存储同样的数据,元组要比列表占用更多的空间;
    展开全文
  • Python 列表和元组的区别? 如何修改元组? 1、列表可变,元组不可变 2、元组缓存于python运行环境,初始化和创建的时候,比列表快 3、同样大小的数据,tuple 占用的内存空间更少 修改元组: 1)通过索引更新 tu=(1,...

    Python 列表和元组的区别? 如何修改元组?

    1、列表可变,元组不可变

    2、元组缓存于python运行环境,初始化和创建的时候,比列表快

    3、同样大小的数据,tuple 占用的内存空间更少

    修改元组:

    1)通过索引更新

    tu=(1,2,3,“ewang”,“demo”)

    tu=tu[0],tu[1],tu[4]

    print(tu)

    2)索引切片

    tu=tu[0:2]

    print(tu)

    3)嵌套列表

    a=(2,“xx”,[‘3’,‘j’,‘l’])

    a[2].append(“ss”)

    print(a[2])

    展开全文
  • 一、列表和元组的区别 列表是动态数组,它们不可变且可以重设长度(改变其内部元素的个数)。 元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。 元组缓存于Python运行时环境,这意味着我们每次使用...

    转载自品略图书馆 http://www.pinlue.com/article/2020/05/2001/1810565237426.html

     

    一、列表和元组的区别

    列表是动态数组,它们不可变且可以重设长度(改变其内部元素的个数)。

    元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。

    元组缓存于Python运行时环境,这意味着我们每次使用元组时无须访问内核去分配内存。

    这些区别结实率两者在设计哲学上的不同:

    列表可被用于保存多个互相独立对象的数据集合

    元组用于描述一个不会改不安的事务的多个属性

    二、列表(List)

    列表一旦创建了我们就可以根据自己的需要随意改变它的内容:

    >>> l = [1, 2, 3, 4, 5, 6]>>> l[0] = l[2] * l[3]>>> l[12, 2, 3, 4, 5, 6]

    另外我们可以给列边添加新的数据来增加其大小:

    >>> len(l)6>>> l.append(7)>>> l[12, 2, 3, 4, 5, 6, 7]>>> len(l)7

    这是因为动态数组支持resize操作,可以增加数组的容量。当一个大小为N的列表第一次需要添加数据时,Python会创建一个新的列表,足够放原来的N个元素以及额外添加的元素。不过,实际分配的并不是N+1个元素,而是M个元素,M > N, 这是为了给未来的添加预留空间。然后旧列表的数据被复制到新列表中,旧列表则会被销毁。从设计理念上来说,第一次添加可能是后续多次添加的开始,通过预留空间的做法,我们就可以减少这一分配空间的操作次数以及内存复制的次数。这点非常重要,因为内存复制可能非常的昂贵,特别是当列表大小开始增长以后。

    三、元组(Tuple)

    元组是固定且不可改变的。这意味着一旦元组被创建,和列表不同,它的内容无法被修改或它的大小也无法被改变。

    >>> t = (1, 2, 3, 4)>>> t[0] = 5Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: 'tuple' object does not support item assignment

    虽然它们不支持改变大小,但是我们可以将两个元组合并成一个新元组。这一操作类似列表的resize操作,但我们不需要为新生的元组分配任何额外的空间:

    >>> t1 = (1, 2, 3, 4)>>> t2 = (5, 6, 7, 8)>>> t1 + t2(1, 2, 3, 4, 5, 6, 7, 8)

    如果我们将其与列表的append操作比较,我们会看到它的复杂度是O(n)而不是列表的O(1)。这是因为对元组每添加一个新元素都会有分配和复制操作,而不是像列表那样仅在额外的空间耗尽时发生。所以元组并没有提供一个类似append的自增操作,任意两个元组相加始终返回一个新分配的元组。

    该网站为Python Tutor,一个能够对python运行内存可视化的网站,非常适合初学者研究,在运行过程中内存发生了什么。

    元组的静态特性的另一个好处体现在一些会在Python后台发生的事情:资源缓存。

    Python是一门垃圾收集语言,这意味着当一个变量不再被使用时,Python会将该变量使用的内存释放回操作系统,以供其他程序(变量)使用。然而,对于长度为1~20的元组,即使它们不在被使用,它们的空间也不会立刻还给系统,而是留待未来使用。这意味着当未来需要一个同样大小的新的元组时,我们不再需要向操作系统申请一块内存来存放数据,因为我们已经有了预留的空间。

    这看上去可能是个细微的好处,但是实际上是元组一个很神奇的地方:它们可以被轻松快速地创建,因为它们可以避免跟操作系统频繁的打交道,而后者会花很长的时间。

    下面举个例子会非常直观的说明问题

    In [1]: %timeit l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]93.7 ns ± 3.33 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)In [2]: %timeit t = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)18.5 ns ± 1.19 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

    上面的示例中显示了初始化一个列表比初始化一个元组慢了5.1倍——如果这是在一个循环中,这点差别会很快的累加起来。

    展开全文
  • Python 列表和元组的区别是什么?

    千次阅读 2018-10-24 14:48:46
    一个 Python 初学者的普遍疑问:列表元组的区别是什么? 答案是:它们之间有两点不同,并且二者之间有着复杂的相互作用。它们分别是”技术上”的差异“文化上”的差异。 首先,有一点是相同的:列表与元组都是...
  • 列表(list)和元组(tuple)一些基础list和tuple都是一个可以放置任意数据类型有序集合,都是既可以存放数字、字符串、对象等list和tuple都支持负索引In [8]: nums[-2]Out[8]: 'ad'In [9]: tp[-2]Out[9]: '33'list...
  • Python列表和元组的详细区别

    万次阅读 多人点赞 2018-06-06 20:40:06
    一、列表和元组的区别 二、列表(List) 三、元组(Tuple) Python列表和元组的详细区别 一、列表和元组的区别 列表是动态数组,它们不可变且可以重设长度(改变其内部元素的个数)。 元组是静态数组,...
  • Python列表元组的区别详解
  • Python列表和元组的详细区别一、列表和元组的区别列表是动态数组,它们不可变且可以重设长度(改变其内部元素的个数)。元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。元组缓存于Python运行时环境,这...
  • 相同点:列表和元组都是容器,包含了一些列对象,二者都可以包含任意类型元素甚至包含序列。什么时候用元组什么时候用列表?答案是没有一个定论,比如不确定元素可以用列表,确定元素用元组。补充一、列表1....
  • Python列表,元组,集合,字典的区别和相互python 元组和列表的区别不可变和可变 元组是不可变对象,对象一旦生成,它的值将不能更改;列表是可变对象,对象生成后,可以对其...python 列表和元组的区别总结python...
  • 给大家详细讲解了python列表和元组的区别,需要的朋友参考一下。
  • 如果有了解过python的列表和元组,你可能会知道相对于列表,元组是不可变,也就是说元组中数据不能随意更改。除了列表是用中括号表示而元组是用小括号表示之外,这两种数据类型好像并没有什么不同,都是用来...
  • @Author :Runsen Python列表和元组总结什么是列表和元组列表是动态,长度大小不固定,可以随意地增加、删减或者改变而元组是静态,长度大小固定,无法增加删减或者改变定义列表和函数l = [1, 2, 'hello', '...
  • 列表和元组的区别1.列表可以看成是动态数组,它们是可变的并且可以重新设定长度2.元组可以看成是静态的数组,它们是不可变的,并且长度也是一旦创建就无法改变从设计上来说:1.列表是用来保存多个相互独立对象的数据集合...
  • 相同点:属于有序序列、可以强制转换、使用len()统计元素个数、使用count()统计指定元素的出现次数。不同点:1、元组类型为tuple,列表类型为...推荐学习:Python视频教程Python列表元组的相同点与不同点1.相同点...
  • 只是粗学,下面进入深入学习在Pthon中数据结构是非常重要,所以下面将深入Pyhon数据结构Python列表和元组总结什么是列表和元组列表是动态,长度大小不固定,可以随意地增加、删减或者改变而元组是静态,长度...
  • python列表元组列表与元组python中最基础两种集合,区别:列表是动态,大小可以改变,元组是不可变,一旦创建就不能修改,因为不变性,所以元组是可哈希。列表介绍列表是对其他对象引用组成连续数组...
  • 如果有了解过python的列表和元组,你可能会知道相对于列表,元组是不可变,也就是说元组中数据不能随意更改。除了列表是用中括号表示而元组是用小括号表示之外,这两种数据类型好像并没有什么不同,都是用来...
  • 如果有了解过python的列表和元组,你可能会知道相对于列表,元组是不可变,也就是说元组中数据不能随意更改。除了列表是用中括号表示而元组是用小括号表示之外,这两种数据类型好像并没有什么不同,都是用来...
  • 只是粗学,下面进入深入学习在Pthon中数据结构是非常重要,所以下面将深入Pyhon数据结构Python列表和元组总结什么是列表和元组列表是动态,长度大小不固定,可以随意地增加、删减或者改变而元组是静态,长度...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,926
精华内容 770
关键字:

python列表和元组的区别

python 订阅