数据类型之元组介绍

Posted achai222

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据类型之元组介绍相关的知识,希望对你有一定的参考价值。

元组就是"一个不可变的列表"

1、作用:按照索引/位置存放多个值,只用于读不用于改

2、定义:()内用逗号分隔开多个任意类型的元素

 

t=(1,1.3,aa) 
# 相当于t=tuple((1,1.3,‘aa‘))
print(t,type(t))
# (1, 1.3, ‘aa‘) <class ‘tuple‘>
?
x=(10) # 单独一个括号代表包含的意思为整数数据类型!!
print(x,type(x))
# 10 <class ‘int‘>
?
t=(10,) # 如果元组中只有一个元素,必须加逗号
print(t,type(t))
# (10,) <class ‘tuple‘>

 

 

元组是不可变数据类型:不可变体现在它第一层的数据指向的内存地址不能更改.

 

t=(1,1.3,aa) # t=(0->值1的内存地址,1->值1.3的内存地址,2->值‘aaa‘的内存地址,)
t[0]=11111
# TypeError: ‘tuple‘ object does not support item assignment
?
t=(1,[11,22]) # t=(0->值1的内存地址,1->值[1,2]的内存地址,)
print(id(t[0]),id(t[1]))
# 1358874288 2579862236488
?
t[0]=111111111 # 不能改第一层的内存地址
# TypeError: ‘tuple‘ object does not support item assignment
?
t[1]=222222222 # 不能改第一层的内存地址
# TypeError: ‘tuple‘ object does not support item assignment
?
t[1][0]=11111111111111111   # 修改第二层的内存地址
print(t)
# (1, [11111111111111111, 22])
?
print(id(t[0]),id(t[1]))
# 1358874288 2579862236488
# 修改第二层的内存地址后第一层内存地址不变

 

 

3、类型转换: 所有能被for循环遍历的数据都能转换成元组,与列表的转换条件相同

print(tuple(hello))
# (‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘)
?
print(tuple([1,2,3]))
# (1, 2, 3)
?
print(tuple({a1:111,a2:333}))
# (‘a1‘, ‘a2‘)
?
print(tuple(range(10)))
# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

 

 

4、内置方法

优先掌握的操作:

1、按索引取值(正向取+反向取):只能取,不能修改,否则会报错
t=(aa,bbb,cc)
print(t[0])
# aa
print(t[-1])
# cc

 

 

2、切片(顾头不顾尾,步长):切片为索引附带的功能,本质为浅拷贝,并不在原数据上进行修改
t=(aa,bbb,cc,dd,eee)
print(t[0:3])
# (‘aa‘, ‘bbb‘, ‘cc‘)
?
print(t[::-1])
# (‘eee‘, ‘dd‘, ‘cc‘, ‘bbb‘, ‘aa‘)

 

 

3、长度: 元组内元素个数
t=(aa,bbb,cc,dd,eee)
print(len(t))
# 5

 

 

4、成员运算in和not in
t=(aa,bbb,cc,dd,eee)
print(aa in t)
# True

 

 

5、循环: 遍历读取
for x in t:
    print(x)

 

 

6、查找:index和count
t=(2,3,111,111,111,111)
print(t.index(111))
# 2
?
print(t.index(1111111111))    # index查找数据不存在时会报错
# ValueError: tuple.index(x): x not in tuple
?
print(t.count(111))         # 111出现的次数
# 4
?

 

 

以上是关于数据类型之元组介绍的主要内容,如果未能解决你的问题,请参考以下文章

python之元组

Erlang复合数据结构基础之元组与列表

数据类型之元组

1-2:数据类型之元组列表类型

python的数据类型之元组列表和字典

6Python全栈之路系列之元组数据类型