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

 

目录
相关文章
|
6天前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
24 9
|
4月前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
14天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
27 14
|
16天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
29 10
|
2月前
|
测试技术 开发者 Python
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
在 Python 中,创建列表有两种方法:使用方括号 `[]` 和调用 `list()` 函数。虽然两者都能创建空列表,但 `[]` 更简洁、高效。性能测试显示,`[]` 的创建速度比 `list()` 快约一倍。此外,`list()` 可以接受一个可迭代对象作为参数并将其转换为列表,而 `[]` 则需要逐一列举元素。综上,`[]` 适合创建空列表,`list()` 适合转换可迭代对象。
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
|
3月前
|
Python
Python中的tuple:探索其强大功能与实用技巧
Python中的tuple:探索其强大功能与实用技巧
52 1
|
2月前
|
索引 Python
Python列表操作-推导式(List Comprehension)
Python列表操作-推导式(List Comprehension)
28 0
|
3月前
|
Python
Python量化炒股的获取数据函数— get_billboard_list()
Python量化炒股的获取数据函数— get_billboard_list()
51 0
|
4月前
|
存储 缓存 索引
python 的 tuple(元组) 是不是冗余设计?
python 的 tuple(元组) 是不是冗余设计?
|
4月前
|
存储 Java 索引