Python学习笔记:元组(tuple)有关内容

元组是跟列表非常类似的一种容器类型,但是列表是可变的,形式是LIST[  ],元组是不可变的,形式为TUPLE(  )。

1.创建元组。

元组的创建方法与列表类似,只有一点不同,元组内至右一个元素的时候需要在元素后面加上一个逗号(,)。因为元组的形式是用

小括号来包含元素的,但是小括号也是数学公式中的,所以会产生歧义,此时系统默认不是元组类型,所以需要加上逗号来区分。

>>> T = (1,2,3)
>>> T
(1, 2, 3)
>>> T = (1)
>>> T
1
>>> print(type(T))
<class 'int'>   #此时为int类型
>>> T = ('abc')
>>> print(type(T))
<class 'str'>  #此时为str类型
>>> T = (1,)
>>> print(T,type(T))
(1,) <class 'tuple'>  #此时为tuple类型
>>> T
(1,)
>>> 

只有一个元素时,输出时会加上一个逗号为了防止认为是数学上面的小括号。

元组内的元素也可以是元组或者列表。

>>> T = ((1,2,3),4)
>>> T
((1, 2, 3), 4)
>>> T = ([1,2,3],4)
>>> T
([1, 2, 3], 4)

同样的列表中的元素也可以是元组或者列表。

>>> L = [(1,2,3),4]
>>> L
[(1, 2, 3), 4]
>>> L = [[1,2,3],4]
>>> L
[[1, 2, 3], 4]

2.访问元组。

访问元组与列表相似,都是通过索引来访问的。

>>> T = (1,2,3,'abc')
>>> T
(1, 2, 3, 'abc')
>>> T[0]
1
>>> T[-1]
'abc'

试图修改元组内容,出现异常。

>>> T = (1,2,3,'abc')
>>> T
(1, 2, 3, 'abc')
>>> T[0]
1
>>> T[0] = 2
Traceback (most recent call last):
  File "<pyshell#101>", line 1, in <module>
    T[0] = 2
TypeError: 'tuple' object does not support item assignment

3.切片操作。

元组也支持切片操作,除了不能用切片操作来对元组进行修改之外与列表没有大的区别。

>>> T = (1,2,3,'a','b','c')
>>> T
(1, 2, 3, 'a', 'b', 'c')
>>> T[1:4]
(2, 3, 'a')
>>> T[-1:-3]
()
>>> T[-3:-1]
('a', 'b')
>>> T[:4:2]
(1, 3)
>>> T[5:1:-2]
('c', 'a')

试图用切片来修改,出现异常。

>>> T = (1,2,3)
>>> T
(1, 2, 3)
>>> T1 = (4,5)
>>> T1
(4, 5)
>>> T[1:3] = T1
Traceback (most recent call last):
  File "<pyshell#106>", line 1, in <module>
    T[1:3] = T1
TypeError: 'tuple' object does not support item assignment

4.删除元组。

列表中可以用 del 来删除列表中的某个元素,但是由于元组是不可变得,所以不能使用 del 删除某个元素。

>>> L = [1,2,3]
>>> L
[1, 2, 3]
>>> del L[0]  #删除列表中的元素 成功
>>> L
[2, 3]
>>> T = (1,2,3)
>>> T
(1, 2, 3)
>>> del T[0]  #试图删除元组中的元素 失败报错
Traceback (most recent call last):
  File "<pyshell#39>", line 1, in <module>
    del T[0]
TypeError: 'tuple' object doesn't support item deletion

但是可以直接删除整个元组的内容。

>>> T = (1,2,3)
>>> T
(1, 2, 3)
>>> del T  #删除整个元组
>>> T      #删除后试图输出,出现异常,T 没有定义
Traceback (most recent call last):
  File "<pyshell#43>", line 1, in <module>
    T
NameError: name 'T' is not defined
>>> L = [1,2,3]
>>> L
[1, 2, 3]
>>> del L  #删除整个列表
>>> L      #删除后试图输出,出现异常,L 没有定义
Traceback (most recent call last):
  File "<pyshell#47>", line 1, in <module>
    L
NameError: name 'L' is not defined

5.元组跟列表一样可以使用 运算符 “ +”  “ * ” 。

>>> T = (1,2,3)
>>> T
(1, 2, 3)
>>> T*3
(1, 2, 3, 1, 2, 3, 1, 2, 3)
>>> T2 = ('a','b','c')
>>> T2
('a', 'b', 'c')
>>> T + T2
(1, 2, 3, 'a', 'b', 'c')

6.元组的有关函数。

因为元组的不可变性,所以很多列表中可以使用的函数,元组中不能够再使用。但是还有些基本的函数可以用。

1>. len()  函数用来统计元组的元素个数。

>>> T = (1,2,3,'abc')
>>> T
(1, 2, 3, 'abc')
>>> len(T)
4

2>. max( )  min ( ) 函数,用来计算元组中的最大数和最小数。

>>> T = (1,2,3)
>>> T
(1, 2, 3)
>>> max(T)
3
>>> min(T)
1

若元素是单个字母时,根据ASCII大小输出。

>>> T = ('a','b','c')
>>> T
('a', 'b', 'c')
>>> max(T)
'c'
>>> min(T)
'a'

若元素是字符串时,也是根据字符串的ASCII大小输出(与长度无关)。

>>> T = ('aaa','zz')
>>> T
('aaa', 'zz')
>>> max(T)
'zz'
>>> min(T)
'aaa'

3>. sum( )  函数。

sum( ) 函数用来计算元组中的元素之和,数字可以计算,字符则会出现异常。

>>> T = (1,2,3)
>>> T
(1, 2, 3)
>>> sum(T)
6
>>> T = ('a','b','c')
>>> T
('a', 'b', 'c')
>>> sum(T)
Traceback (most recent call last):
  File "<pyshell#74>", line 1, in <module>
    sum(T)
TypeError: unsupported operand type(s) for +: 'int' and 'str'

4>. tuple() 可将其他类型转换成元组类型并返回副本,不改变原有数据类型。

>>> T = [1,2,3]
>>> T
[1, 2, 3]
>>> type(T)
<class 'list'>
>>> tuple(T)
(1, 2, 3)
>>> type(T)
<class 'list'>
>>> print(type(tuple(T)))  #返回的是元组类型副本。
<class 'tuple'>

python 2.x版本中还有cmp() 函数用来,比较两个元组是否相同或者谁大谁小,但是pyth3.x版本中没有了。

8.元组的  “”“某些可变内容””“。

元组的元素的是不可变的,但是元组中元素的元素是可变的,如果元素中包含了一个列表元素,由于列表是可变的,所以元组看起来好像也是改变了,

但是此时改变的是列表中的元素,而元组中的元素并没有改变,元组的元素是一个列表还是一个列表但是列表的内容不同而已。

>>> T = ([1,2,3],1,2,3)
>>> T
([1, 2, 3], 1, 2, 3)
>>> T[0][0] = 'abc'
>>> T
(['abc', 2, 3], 1, 2, 3)

9.默认集合类型。

所有的多对象、逗号分隔的,没有明确用符号定义的(比如用方括号表示列表和圆括号表示元组),这些集合默认的类型都是元组。(摘自:python核心编程)。

>>> 'a',1,'abc'
('a', 1, 'abc')
>>> x,y = 1,2
>>> x,y
(1, 2)

可以看出,输出后用圆括号包括,是元组。

10.列表 VS 元组。(摘自:python核心编程)

一个经常会被问道的问题是:“为什么我们要区分元组和列表变量?” ,这个问题也可以被表述为“我们真的需要两个相似的序列类型么?” , 一个原因是在有的情况

下,使用其中的一种类型要优于使用另一种类型。

最好使用不可变类型变量的一个情况是,如果你在维护一些敏感的数据,并且需要把这些数据传递给一个并不了解的函数(或许是一个根本不是你写的API),作为

一个只负责一个软件某一部分的工程师,如果你确信你的数据不会被调用的函数篡改,你会觉得安全了许多。

一个需要可变类型参数的例子是,在管理动态数据集合时。你需要先把它们创建出来,逐渐的或者不定期的添加它们,或者有时还要移除一些单个的元素。这是一个

必须使用可变类型对象的典型例子。幸运的是,通过内建的list(0 和 tuplp() 转换函数,你可以非常轻松的在两者之间进行转换。

list()和tuple() 函数允许你用一个列表来创建一个元组,反之亦然。如果你有一个元组变量,但是你需要你个列表变量,因为你要更新一下它的对象,这时list(0 函数

就是你最好的帮手,如果你有一个列表变量,并且向把它传递给一个函数,或许一个API,而你又想任何人弄乱你的数据,这时tuple()函数就非常有用。

以上内容均在Python3.5环境测试可运行,由于本人刚开始接触python且为自学,所以有不对的地方请多多包涵并欢迎指出错误以便更正!

时间: 2024-09-30 06:55:03

Python学习笔记:元组(tuple)有关内容的相关文章

Python学习:元组(tuple)

元组tuple也是Python 的一个集合类型.有以下特点: 任意对象的有序集合: 通过偏移存取,而不是键: 不可变序列类型: 固定长度.异构.任意嵌套: 对象引用的数组. 常见运算: ()        #空元组 T =(0,) T = (0, 'Ni', 1.2, 3) T =  0, 'Ni', 1.2, 3    #另一个四元素的元组 T = tuple('spam') T[i] T[i][j] T[i:j] len(T) T1 + T2        #合并.重复 T*3 for x 

Python学习笔记#元组和列表的区别

python的基本类型中有元组和列表这么俩个,但是这哥俩却比较难于区分,今天就来用简单的实例说明两者的不同. 列表:1.使用中括号([ ])包裹,元素值和个数可变 实例: aaa = ['sitename','www','pythontab','com'] 元组:1.使用中括号(())包裹,不可以被更改(尽管他们的内容可以) bbb = ['sitename','www','pythontab','com'] 元组可以看成是 只读 的列表 两者都可以通过[:]得到子集,和字符串使用方法相同 下例

python学习笔记-day2-dict,tuple, string常用函数

上一篇说了Python的list的基本方法,这里接着说说dict,tuple. 一.tuple,元组 1.元组的定义 或: 2.使用切片访问元组里的元素 详细的可以参考list的切片用法 3.元组是不可修改,是不可变变量 4.访问元组里的元素 二.字典的使用 1.字典定义 2.字典的查询操作 3.添加字典的元素 有两种方法: (1) 使用如: infos['phone'] = 12345678977 #增加一个key (2) 使用 infos.setdefault('小金库', '2000w')

python学习:元组tuple

1 元组定义: 说明:元组不可以修改,一般用圆括号括起来 例子: #一般元组 >>> 1,2,3 (1, 2, 3) >>> (1,2,3) (1, 2, 3) #一个元素的元组 >>> (1,) (1,) >>> 2, (2,) #空元组 >>> () () >>> #元组的乘法 >>> 4* (2,) (2, 2, 2, 2) >>> 2 tuple函数 说明

Python学习笔记——元组

1.创建一个元组并给它赋值 >>> aTuple = (123,'abc',4.56,['inner','tuple'],7-9j) >>> aTuple (123, 'abc', 4.56, ['inner', 'tuple'], (7-9j)) >>> tuple('ABC') ('A', 'B', 'C')  2.访问元组中的值 >>> aTuple[0] 123 >>> aTuple[1:4] ('abc',

Python 学习笔记 -- 元组基本使用

#如何定义一个标准的元组 arr = (1,2,3,4,5,6,7) print("arr = %s " % str(arr)) #如何定义一个只有一个元素的元组 print("") print("如何定义一个只有一个元素的元组") arr = (1,) print("正确:arr1=(1,): %s" % type(arr)) #正确 arr = (1) print("错误:arr1=(1): %s "

python学习笔记3:列表和元组

python学习笔记3:列表和元组 一.列表 list 总结:列表是可变变量,可以通过下标修改元素的值 1.定义列表 -- 中括号[ ] name=['Lily','Lucy','meimei'] 2.下标取值 --正负数均可 3.在列表中添加值 1)append() 方法,在列表末尾添加一个值 2)insert()方法,在列表指定位置添加一个值 3)extend()方法,把一个列表追加到一个列表的末尾            4.从列表中删除值 1)pop() 方法,默认删除最后一个元素,并且返

python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典

python学习笔记2--python文件类型.变量.数值.字符串.元组.列表.字典 一.Python文件类型 1.源代码 python源代码文件以.py为扩展名,由pyton程序解释,不需要编译 [[email protected] day01]# vim 1.py #!/usr/bin/python        print 'hello world!' [[email protected] day01]# python 1.py hello world! 2.字节代码 Python源码文件

python 学习笔记 13 -- 常用的时间模块之time

Python 没有包含对应日期和时间的内置类型,不过提供了3个相应的模块,可以采用多种表示管理日期和时间值: *    time 模块由底层C库提供与时间相关的函数.它包含一些函数用于获取时钟时间和处理器的运行时间,还提供了基本解析和字符串格式化工具 *    datetime 模块为日期.时间以及日期时间值提供一个更高层接口.datetime 中的类支持算术.比较和时区配置. *    calendar 模块可以创建周.月和年的格式化表示.它还可以用来计算重复事件.给定日期是星期几,以及其他基