Python顺序集合之 tuple

本文内容摘录自慕课网《Python入门》

1、tuple特性

tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。

 >>> t = (‘Adam‘, ‘Lisa‘, ‘Bart‘) 

创建tuple和创建list唯一不同之处是用( )替代了[ ]

现在,这个 t 就不能改变了,tuple没有 append()方法,也没有insert()和pop()方法。所以,新元素没法直接往 tuple 中添加,在 tuple删除元素 也不行。

获取 tuple 元素的方式和 list 是一模一样的,可以正常使用 t[0],t[-1]等索引方式访问元素,但是不能赋值成别的元素。

 >>> t[0] = ‘Paul‘
 Traceback (most recent call last):
 File "", line 1, in
 TypeError: ‘tuple‘ object does not support item assignment

2、创建单元素tuple

包含 0 个元素的 tuple,也就是空tuple,直接用 ()表示:

 >>> t = ()
 >>> print t
 ()

创建包含1个元素的 tuple 呢?来试试:

 >>> t = (1)
 >>> print t
 1

因为()既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。

正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义:

 >>> t = (1,)
 >>> print t
 (1,)

Python在打印单元素tuple时,也自动添加了一个“,”,为了更明确地告诉你这是一个tuple。

3、"可变”的tuple

tuple也是“可变”的,如:

 >>> t = (‘a‘, ‘b‘, [‘A‘, ‘B‘])

注意到 t 有 3 个元素:‘a‘,‘b‘和一个list:[‘A‘, ‘B‘]。list作为一个整体是tuple的第3个元素。list对象可以通过 t[2] 拿到:

 >>> L = t[2]

然后,我们把list的两个元素改一改:

 >>> L[0] = ‘X‘
 >>> L[1] = ‘Y‘

再看看tuple的内容:

 >>> print t
 (‘a‘, ‘b‘, [‘X‘, ‘Y‘])
表面上看,tuple的元素确实变了,但其实变的不是 tuple 的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向‘a‘,就不能改成指向‘b‘,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。
时间: 2024-08-12 22:10:20

Python顺序集合之 tuple的相关文章

Python顺序集合之 List

Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ['Jenkins', 'Jenny', 'Tracy'] ['Jenkins', 'Jenny', 'Tracy'] list是数学意义上的有序集合,也就是说,list中的元素是按照顺序排列的. 1.添加新元素:append().insert() 1.append() :  append()总是把新的元素添加到 li

Python中的list,tuple,dict和set

List list的创建与检索 Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 构造list非常简单,直接用 [ ] 把list的所有元素都括起来,就是一个list对象. Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据: 例如: >>> L = ['Michael', 100, True] list索引从 0 开始,也就是说,第一个元素的索引是0,第二个元素的索

Python中集合(set)的基本操作以及一些常见的用法

Python除了List.Tuple.Dict等常用数据类型外,还有一种数据类型叫做集合(set),集合的最大特点是:集合里边的元素是不可重复的并且集合内的元素还是无序的,所以一般情况下集合常用的两个场景是:1.去重(如:列表去重):2.关系测试(如:取交集.取并集.取差集等) 1)集合包含一组无序的对象,可以使用set()函数来像下边的方式一样来创建集合 #!/usr/bin/env python # -*-coding:UTF-8 -*- #创建一个数值集合 set1 = set([1,2,

Python中集合(set)的操作及一些比较常见的用法

Python除了List.Tuple.Dict等常用数据类型外,还有一种数据类型叫做集合(set),集合的最大特点是:集合里边的元素是不可重复的并且集合内的元素还是无序的,所以一般情况下集合常用的两个场景是:1.去重(如:列表去重):2.关系测试(如:取交集.取并集.取差集等) 1)集合包含一组无序的对象,可以使用set()函数来像下边的方式一样来创建集合 #!/usr/bin/env python # -*-coding:UTF-8 -*- #创建一个数值集合 set1 = set([1,2,

一入python深似海--tuple和set

tuple(元组) 另一种有序列表叫元组:tuple.tuple和list非常类似,但是tuple一旦初始化就不能修改,tuple属于不可变对象.比如同样是列出同学的名字: >>> classmates = ('Michael', 'Bob', 'Tracy') 现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法.其他获取元素的方法和list是一样的,你可以正常地使用classmates[0],classmates[-1],但不能赋值成

python 顺序表

python 顺序表   学习了一下,数据结构与算法,做一下总结.如果那里不对,请多指教. 顺序表,将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示. 链表,将元素存放在通过链接构造起来的一系列存储块中.     b中的c不再是数据元素的大小,而是存储一个链接地址所需的存储量,这个量通常很小. Python中的list和tuple两种类型采用了顺序表的实现技术 增加元素    1尾端加入元素,时间复杂度为O(1)    2非保序的加入元素(不常见),时间复杂度为O(

python frozenset集合(17)

在前一篇文章中我们对 python set集合 做了详细的讲解,而本文讲解的 frozenset集合 其实和set集合类似!区别在于frozenset集合不能修改/添加/删除,其他功能和set集合一样,这就有点类似列表list和元组tuple的区别. 一.frozenset集合语法 # 创建一个frozenset集合 a = frozenset(iterable) 其中 iterable 是序列或者可迭代对象,并返回frozenset集合 二.frozenset集合使用 # !usr/bin/e

Python set集合详解

Python 中的集合,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同. 从形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中,相邻元素之间用“,”分隔,如下所示: {element1,element2,...,elementn} 其中,elementn 表示集合中的元素,个数没有限制.https://www.furuihua.cn/article/456.html 从内容上看,同一集合中,只能存储不可变的数据类型,包括整形.浮点型.字

4. Python里面如何实现tuple和list的转换

# Python里面如何实现tuple和list的转换 li = [1,2,3,4] print(tuple(li)) li1 = (1,2,3,4) print(list(li1)) str = '123' print(list(str))