Python 元组

python  元组

python 的元组与列表类似不同之处在于元组的元素不能修改。

元组使用小括号,列表使用方括号。

元组创建只需要在括号中添加元素,并使用逗号隔开即可。

如例:

tup1 = ('Google','Runoob','1889','3990');
tup2 = (1,2,3,4,5);
tup3 = "a","b","c","d";

创建空元组:

tup1 = ();
元组只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:
tup1 = (30)     #不加逗号,类型为整型
print(type(tup1))

tup1 = (50,)    #加上逗号,类型为元组
print(type(tup1))

#输出结果为:

<class 'int'>
<class 'tuple'>
元素与字符串类似,下标索引从0 开始,可以进行截取,组合等。

访问元组

元组可以使用下标索引来访问元组中的值,如下实例:
tup1 = ('Google','Runoob','1889','3990');
tup2 = (1,2,3,4,5,6,7)

print ("tup1[0]:",tup1[0])
print ("tup2[1:5]:",tup2[1:5])

输出结果为:

tup1[0]: Google
tup2[1:5]: (2, 3, 4, 5)

修改元组

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如例:
tup1 = (14,54,24)
tup2 = ('abc','xup')

#修改以下元组元素是非法的。
#tup1[0] = 100

#创建一个新的元组
tup3 = tup1 + tup2
print(tup3)

输出结果为:

(14, 54, 24, 'abc', 'xup')

删除元组

元组中的元素值是不允许删除的,但可以使用del语句来删除整个元组,如例:
tup = ('Google','Runoob','1889','3990');
print (tup)
del tup;
print ("删除后的元组 tup :")
print (tup)#删除后的元组,输出变量时有异常

#输出结果为:

# ('Google', 'Runoob', '1889', '3990')

#删除后的元组 tup :
# NameError: name 'tup' is not defined

元组运算符

列表对“+”和“*”的使用与字符串相似。+号用于组合列表,*号用于重复列表。如下:

表达式:                                    结果:                                 描述:

len([1,2,3])                                  3                                       长度

[1,2,3]+[4,5,6]                             [1,2,3,4,5,6,]                   组合

['h1']*4                                        ['h1','h1','h1','h1',]         重复

3 in [1,2,3]                                   True                                 元素是否存在于列表中

for x in [1,2,3]:print x,    1 2 3                                迭代(所谓迭代,是按照一定顺序扫描列表的对象)

元组索引,截取

因为元组也是一个数列,所以可以访问元组数据中的指定位置的元素,也可以截取索引中的一段元素:

L=['Google','Runoob','Taobao']
操作:

表达式:          结果:                        描述:

L[2]                 'Taobao'                     读取第三个元素

L[-2]                'Runoob'                   从右侧开始读取倒数第二个元素(负数从右往左读取)

L[1:  ]               ['Runoob','Taobao']  截取元素,输出从第二个元素开始后的所有元素

L=['Google','Runoob','Taobao']
print (L[2])

print (L[-2])

print (L[1:])

输出结果为:

Taobao
Runoob
['Runoob', 'Taobao']

元组内置函数

python 元组包含了以下内置函数:

  • len(tuple):计算元组元素的个数

tuple1 = ('Google','Runoob','Taobao')
print (len(tuple1))
#输出结果为:
3

  • max(tuple):返回元组中元素最大值
tuple2 = ('3','6','8')
print (max(tuple2))
#输出结果为:
8
  • min(tuple):返回元组中元素最小的值
tuple2 = ('3','6','8')
print (min(tuple2))
#输出结果为:
3
  • tuple(seq):将列表转换为元组
list1=['Google','Runoob','Taobao','Baidu']
tuple1=tuple(list1);
print(tuple1)

#输出结果为:

('Google', 'Runoob', 'Taobao', 'Baidu')
----------------------------------------------------------------------------------------------
笔记:
tuple 和list非常相似,但是 tuple 一旦初始化就不能修改,比如同样列出同学名字:

如下:

classmates = ('Michael', 'Bob', 'Tracy')
现在 classmates这个 tuple 不能改变,它,没有append(), inset () 这样的方法。其它 获取元素的方法和list 是一样的,可以正常的使用 classmates[0],classmates[-1], 但是不能赋值成另外的元素。

tuple 不可变得意义:以为tuple 不可变,所有代码更安全,如果可能,能用tuple 代替list 就用tuple。

tuple 的陷阱:当定义一个tuple 时,在定义的时候,tuple 的元素 就必须给确定下来:比如:

t = (1,2)
print (t)
输出结果:
(1, 2)
如果定义一个空的tuple,则写成  ():
t = ()
print (t)
输出结果:
()

要定义一个只有1 的元素的 tuple 时,必须加逗号,如果不加:

t = (1)
print (t)
输出结果:
1

则定义的不是tuple,是1 这个数!这是因为括号()既可以表示tuple,又可以表示数学公式的小括号,易产生歧义,所以,只有 1 个元素(或者只显示一个元素时)的tuple定义时必须加一个逗号,消除歧义:

t = (1,)
print (t)
输出结果:
(1,)
看一个可变的tuple:
t = ('a','b',['A','B'])
t[2][0]='x'
t[2][1]='y'
print (t)

输出结果为:
('a', 'b', ['x', 'y'])
这个tuple定义的时候有三个元素,是‘a’,'b',和一个list。问题来了:tuple一旦定义之后就不会变,怎么变了么?

因为当我们把list 的元素;“A”和"B"修改为'X'何'Y'后,

tuple表面上看元素确实变了,但是变得并不是tuple的元素。tuple开始

指向的list并没有改变成别的list,所以,tuple所谓的“不变”是说tuple的每个元素,指向永远不变。即指向:“a”,就不能改向“b”,指向一个list,就不能指向其他对象,但是《指向这个list的对象本身是可变的》,理解“指向不变”后,要创建一个内容也不变的tuple时,必须保证tuple本身的每一个元素都不能变。

----------------------------------------------------------------------------------------------

tuple元素不可变有一种特殊的情况,当元素是课变对象时,对象内部的属性是可以更改的,tuple不可变是指限制在一个维度上:元素的类型。实现理解,tuple的元素所保存的内容(数值或内存地址)是不允许修改的,但是地址映射的对象自身是可以修改的。

a = (1,[3,2])
a [1][0]=1
print (a)

a[1].append(3)
print (a)

del a[1][2]
print (a)

del a[1]
print (a)#产生异常

del a[1][1]
del a[1][0]
print (a)

输出结果为:

(1, [1, 2])

(1, [1, 2, 3])

(1, [1, 2])

TypeError: 'tuple' object doesn't support item deletion(报错)

(1, [])

字符串是一种特殊的 tuple,支持tuple的运算符:

a = '123456'
print (a[2])

print (a[3:])

print (type(a))

print (a*2)

# 6 in a#报错
print (a)

for x in a:print (x)

输出结果为:

3

456

<class 'str'>

123456123456

123456

TypeError: 'in <string>' requires string as left operand, not int

1
2
3
4
5
6













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值