当前位置: 首页 > 面试题库 >

Python-列表和元组之间有什么区别?

滕学义
2023-03-14
问题内容

有什么不同?

元组/列表的优点/缺点是什么?


问题答案:

除了元组是不可变的之外,还应有语义上的区别来指导它们的用法。元组是异构数据结构(即,它们的条目具有不同的含义),而列表是同类序列。元组具有结构,列表具有顺序。

使用这种区别可以使代码更加明确和易于理解。

一个示例是成对的页和行号,以成对参考书中的位置,例如:

my_location = (42, 11)  # page number, line number

然后,您可以将其用作字典中的键来存储有关位置的注释。另一方面,列表可用于存储多个位置。自然地,人们可能想在列表中添加或删除位置,因此使列表可变是有意义的。另一方面,从现有位置添加或删除项目没有意义-因此,元组是不可变的。

在某些情况下,您可能想更改现有位置元组中的项目,例如在页面的各行中进行迭代时。但是元组不变性迫使您为每个新值创建一个新的位置元组。从表面上看,这似乎很不方便,但是使用这样的不可变数据是值类型和函数式编程技术的基石,它可以具有很多优点。

关于此问题,有一些有趣的文章,例如“ Python元组不仅仅是常量列表”或“了解Python中的元组与列表”。官方Python文档也提到了这一点

“组是不可变的,并且通常包含一个异类序列…”。

在像Haskell这样的静态类型语言中,元组中的值通常具有不同的类型,并且元组的长度必须固定。在列表中,所有值都具有相同的类型,并且长度不是固定的。因此区别非常明显。

最后,Python中有一个namedtuple,这很有意义,因为一个元组应该已经具有结构。这强调了元组是类和实例的轻量级替代方案的思想。



 类似资料:
  • 问题内容: 有什么不同? 元组/列表的优点/缺点是什么? 问题答案: 除了元组是不可变的之外,还应有语义上的区别来指导它们的使用。元组是异构数据结构(即,它们的条目具有不同的含义),而列表是同类序列。元组具有结构,列表具有顺序。 使用这种区别可以使代码更加明确和易于理解。 一个示例是成对的页和行号,以指向一本书中的参考位置,例如: 然后,您可以将其用作字典中的键来存储有关位置的注释。另一方面,列表

  • 元组和列表同属序列类型,且都可以按照特定顺序存放一组数据,数据类型不受限制,只要是 Python支持的数据类型就可以。那么,元组和列表有哪些区别呢?元组和列表最大的区别就是,列表中的元素可以进行任意修改,就好比是用铅笔在纸上写的字,写错了还可以擦除重写;而元组中的元素无法修改,除非将元组整体替换掉,就好比是用圆珠笔写的字,写了就擦不掉了,除非换一张纸。

  • 问题内容: 在此示例中: 无法编译为: 而被编译器接受。 这个答案说明唯一的区别是,与不同,它允许您稍后引用类型,似乎并非如此。 是什么区别,并在这种情况下,为什么不第一编译? 问题答案: 通过使用以下签名定义方法: 并像这样调用它: 在jls§8.1.2中,我们发现(有趣的部分被我加粗了): 通用类声明定义了一组参数化类型(第4.5节), 每种可能通过类型arguments调用类型参数节的类型

  • 问题内容: Python模块和Python包之间有什么区别? 问题答案: 模块是单个文件(一个或多个文件),可在一个导入下导入并使用。例如 包是目录中提供包层次结构的模块的集合。

  • 我刚刚开始使用Angular 2。 我想知道Angular 2中的组件和指令有什么区别?

  • 问题内容: 和之间有什么区别?我们什么时候必须使用完? 双冒号和单冒号表示法是区分伪类和伪元素。 以上声明的实际含义是什么? 问题答案: 伪类: CSS伪类是关键字,其前面带有一个冒号(:),并添加到选择器的末尾,以指定要对选定元素进行样式设置( 仅当它们处于特定状态时) 。例如,您可能只想在元素被鼠标指针悬停时设置样式,或者在元素被禁用或选中时选中一个复选框,或者是作为其父元素在DOM树中的第一