[python skill]python中tuple 和list 的区别

简介: 引用1:https://blog.csdn.net/infty/article/details/42392571感谢~ 只看定义的话,Tuple会被理解为元素不可变(immutable)的List。

引用1:https://blog.csdn.net/infty/article/details/42392571

感谢~

 

只看定义的话,Tuple会被理解为元素不可变(immutable)的List。但如果只是如此,完全没有必要引入一个新的类型。

 

这里有一个很有意思的讨论。其中举了个例子。比如你去散步,在每一时刻,你都可以记录下自己的位置,比如$(x,y)$,这是一个Tuple;把这个坐标点放到一个List中,然后每隔一段时间,增添新的坐标点。这样很符合逻辑。但反过来就讲不通了。这反映了Tuple内的各元素之间很强的互补关系--它们共同描述了一个个体。在这个例子中,就是一个坐标点;你如果试图去掉其中的$x$坐标,从两维降到一维,这个Tuple就没有意义了--没人知道它代表那个点。这是Tuple元素不可增添或删减的原因。

 

另一方面,各坐标点之间的关系则只有先后关系,没有强烈的逻辑关联。所以你如果去掉List的末尾一个坐标点--没问题,现在的List表示的是在你到达倒数第二点前的路线。

 

用上述讨论中的一句话总结,就是“List有(先后)次序,Tuple有(逻辑)结构”。

 

另一个说法也很有道理,Tuple是一个微型的Class。毫无疑问,Class中的所有元素都是为了描述同一个事物而存在。

 

(按照最小化的思想,Tuple的确不必引入。但从理解一段代码的角度,看到一个Tuple,我们马上就知道它在描述一件事物,逻辑上显然更加清晰易懂。)

 

引用2:https://blog.csdn.net/null_kt/article/details/53467223

感谢~

#只创建一个tuple  需要加,消除歧义
a_tuple=(2,)
#在tuple中创建list
mixed_tuple=(1,2,['a','b'])
print("mixed_tuple"+str(mixed_tuple))
#如果在tuple中嵌套list tuple中的list是可以被更改的 
mixed_tuple[2][0]='c'
print(mixed_tuple)
#tuple是一个不可以改变的list 一旦创建 一个tuple 就不能以任何的方式改变它


#tuple 与list 的相同之处
#定义 tuple 与定义list的方式相同,除了整个元素集用小括号包围的而不是方括号
#tuple的元素与list一样按定义的次序进行排序 tuple的索引与list一样从0开始,所以
#一个非空的tuple的一个元素总是t[0]
#负数索引与list一样从tuple的尾部开始计数
#与list一样分片(slice)也可以使用 .注意当分割一个list时,会得到一个新的list;当分割
#所以当分割一个tuple时,会得到一个新的tuple
#
#tuple不存在的方法
# 不能从一个tuple增加元素。所以没有append 和extend方法
#不能用tuple删除元素,所以没有remove和pop方法 
#然而可以使用in 来查看一个元素是否存在tuple中
#

##用tuple的好处
#tuple比list操作速度快.如果定义了一个值的常量集,并且唯一要用它做的是不断地遍历
#则用tuple代替list
#如果对不需要修改的数据进行"写保护",它可以使代码更安全.使用tuple而不是list如同拥有一个
#隐含的assert语句,说明这一数据是常量.如果必须要修改这些值.可以把tuple转换list
#的转换

#tuple与list的转换
#tuple可以转换成list,反之亦然.内置的tuple函数接受一个list,并返回一个有着相同元素的tuple.而list函数
#接收一个tuple返回一个list.从效果上看,tuple冻结一个list,而list解冻一个tuple
#
#tuple的其他应用
#一次赋多值
#>>>v=('a','b','e'))
#>>>(x,y,z)=v
#解释:v是一个三元素的tuple并且(x,y,z)是一个三变量的tuple.将一个tuple赋值给另一个tuple会按顺序将v的每一
#个值赋给每一个变量

 

目录
相关文章
|
29天前
|
测试技术 开发者 Python
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
在 Python 中,创建列表有两种方法:使用方括号 `[]` 和调用 `list()` 函数。虽然两者都能创建空列表,但 `[]` 更简洁、高效。性能测试显示,`[]` 的创建速度比 `list()` 快约一倍。此外,`list()` 可以接受一个可迭代对象作为参数并将其转换为列表,而 `[]` 则需要逐一列举元素。综上,`[]` 适合创建空列表,`list()` 适合转换可迭代对象。
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
|
1月前
|
存储 大数据 数据处理
Python 中的列表推导式与生成器:特性、用途与区别
Python 中的列表推导式与生成器:特性、用途与区别
21 2
|
1月前
|
存储 C语言 Python
解密 Python 的变量和对象,它们之间有什么区别和联系呢?
解密 Python 的变量和对象,它们之间有什么区别和联系呢?
20 2
|
2月前
|
存储 Python
Python中类方法、实例方法与静态方法的区别
这三种方法的正确使用可以使代码更加清晰、组织良好并且易于理解,从而有效地支持软件开发的面向对象编程范式。
31 1
|
30天前
|
机器学习/深度学习 缓存 Linux
python环境学习:pip介绍,pip 和 conda的区别和联系。哪个更好使用?pip创建虚拟环境并解释venv模块,pip的常用命令,conda的常用命令。
本文介绍了Python的包管理工具pip和环境管理器conda的区别与联系。pip主要用于安装和管理Python包,而conda不仅管理Python包,还能管理其他语言的包,并提供强大的环境管理功能。文章还讨论了pip创建虚拟环境的方法,以及pip和conda的常用命令。作者推荐使用conda安装科学计算和数据分析包,而pip则用于安装无法通过conda获取的包。
58 0
|
2月前
|
Python
全网最适合入门的面向对象编程教程:Python函数方法与接口-函数与方法的区别和lamda匿名函数
【9月更文挑战第15天】在 Python 中,函数与方法有所区别:函数是独立的代码块,可通过函数名直接调用,不依赖特定类或对象;方法则是与类或对象关联的函数,通常在类内部定义并通过对象调用。Lambda 函数是一种简洁的匿名函数定义方式,常用于简单的操作或作为其他函数的参数。根据需求,可选择使用函数、方法或 lambda 函数来实现代码逻辑。
|
2月前
|
机器学习/深度学习 人工智能 安全
python和Java的区别以及特性
Python:适合快速开发、易于维护、学习成本低、灵活高效。如果你需要快速上手,写脚本、数据处理、做点机器学习,Python就是你的首选。 Java:适合大型项目、企业级应用,性能要求较高的场景。它类型安全、跨平台能力强,而且有丰富的生态,适合更复杂和规模化的开发。
47 3
|
1月前
|
索引 Python
Python列表操作-推导式(List Comprehension)
Python列表操作-推导式(List Comprehension)
|
2月前
|
存储 编译器 Linux
Cython 和 Python 的区别
Cython 和 Python 的区别
35 0
|
2月前
|
Python
Python量化炒股的获取数据函数— get_billboard_list()
Python量化炒股的获取数据函数— get_billboard_list()