[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的每一
#个值赋给每一个变量

 

目录
相关文章
|
30天前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
1月前
|
索引 Python
【Leetcode刷题Python】从列表list中创建一颗二叉树
本文介绍了如何使用Python递归函数从列表中创建二叉树,其中每个节点的左右子节点索引分别是当前节点索引的2倍加1和2倍加2。
35 7
|
1月前
|
SQL 机器学习/深度学习 算法
【python】python指南(五):静态类型注解之List
【python】python指南(五):静态类型注解之List
25 0
【python】python指南(五):静态类型注解之List
|
28天前
|
存储 Java 索引
|
29天前
|
测试技术 索引 Python
Python接口自动化测试框架(基础篇)-- 常用数据类型list&set()
本文介绍了Python中list和set两种数据类型的使用,包括它们的创建、取值、增删改查操作、排序以及内置函数的使用,还探讨了list的比较函数和set的快速去重功能。
17 0
|
30天前
|
Java
【Java基础面试四十六】、 List<? super T>和List<? extends T>有什么区别?
这篇文章阐述了Java泛型中的List<? super T>和List<? extends T>的区别,解释了通配符的使用规则,以及Java泛型设计原则确保了编译时无警告则运行时无ClassCastException异常。
|
2月前
|
Python
|
1月前
|
JSON 算法 算法框架/工具
【python】python指南(十二):Json与dict、list互相转换
【python】python指南(十二):Json与dict、list互相转换
13 0
|
2月前
|
存储 缓存 Python
Python中的列表(List)和元组(Tuple)是两种重要的数据结构
【7月更文挑战第12天】Python中的列表(List)和元组(Tuple)是两种重要的数据结构
36 1
|
2月前
|
存储 索引 Python
【Python】已解决:IndexError: list index out of range
【Python】已解决:IndexError: list index out of range
206 1