python什么是元组?

Python012

python什么是元组?,第1张

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

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

例如:

tup1 = ('physics', 'chemistry', 1997, 2000)

tup2 = (1, 2, 3, 4, 5 )

元组与列表类似,下标索引从0开始,使用下标来访问数据。但元祖中,元素值是不允许修改的。

在Python中,元组(Tuple)与列表(List)类似,也是一个有序的序列,但元组是一个不可变对象,其一旦初始化后便无法进行修改。

一般在创建元组时,分为创建空元组和非空元组,其创建方式如下:

从上面可以看到,我们只需要把元组的所有元素放在 小括号 () 里面,每个元素之间通过 逗号 , 间隔起来即可,当然和列表一样,元组中同样允许存放不同数据类型的元素。

元组中使用的 () 是常见的数学运算符,如果参考列表的创建,如下:

从上面可以看到,我们创建出来的压根就不是元组类型。那么我们想创建一个只包含一个元素的元组时,需要怎么创建呢?

很简单,只需要在元素后加上一个 逗号 , ,这样创建出来就是一个元组。

当我们需要访问元组中的元素,可以类似列表一样通过索引取值或切片取值。

如果访问的索引不存在,那么会报错: IndexError: tuple index out of range

在元组中,可以像列表一样使用切片,语法为: 元组[start:end:step] ,通过切片可以获取到元组中指定范围的元素,返回结果是一个新元组。在这里,需要注意切片的规则是左闭右开,也就是说包含头部 start,但不包含尾部 end ,而 step 则表示切片的步长,需要每间隔 step 个元素取一次。

在上面我们提到了元组是不可变的,这就意味着我们创建一个元组之后,不能再去改变其值了,比如下面这样就会出现报错:

假设元组中存在元素是一个可变对象,如果我们不改变元组,但改变了可变对象的值,又会得到怎么的结果呢?请看下面实例:

从上面可以看到,元组中的第 2 个元素似乎发生了变化,这岂不是和上面说的元组不可变自相矛盾了吗?

其实,我们说的元组不可变,指的是元组中各元素的指向永远保持不变。在上面操作中,元组中第 2 个元素指向的一直是 列表nums ,我们改变的其实不是元组的元素,而只是改变了 列表nums 中的元素。

元组是不可变的,因此我们就不能删除元组中的元素,但是,我们可以通过 del 语句删除整个元组。

通过关键字 in ,可检查当前元组中是否包含指定元素,返回结果为布尔值 True 或 False。

通过关键字 in ,还可以用于遍历当前元组。

定义元组(tuple):

t1=(1,2,3,4)#多个数据元组

t2=(1,)#如果元组内只有一个数据,也需要手逗号隔开,否则这个数据将是他本身的类型。

元组的操作:

元组类型数据不支持修改,可查找

查找:

按下标查找:

print(t1[1])

函数查找:

print(t1.index(1))返回对应下标,如果数据不存在,程序将报错

print(t1.count(1))统计数据在元组当中出现的次数

print(len(t1))统计元组当中的数据个数

注意:当元组内嵌套列表数据,可以通过下标的方法对列表数据进行修改如:

t3=(1,2,["a","b"])

t3[2][0]=c #t3的值将变为(1,2,["c","b"])

——————————————————

——————————————————

定义字典(dict)

字典的特点

1:符号为{}

2:数据为键(key)值(value)对形式,每个键值对之间用逗号隔开如:

dict1={"name":"小明","age":18,"gender:男"}

字典的操作:

dict1["name"]="小红"

dict1["id"]=3

如果key存在,将修改其所对应的值。如果不存在,将在字典最后添加该键值对

2.删除数据

del():删除字典或删除字典内的键值对

del dict1["name"] 删除字典内的键值对,如果删除的key不存在,程序将会报错

del(del)删除字典

clear(dict1) 清空字典

3.查找数据

一.按照key进行查找,最后返回相对应的值

二.按函数进行查找:

(1) get(key,默认值):

如果查找的key不存在则返回所写的默认值,如果不写默认值则返回None

dict1={"name":"小明","age":18,"gender:男"}

print(dict1.get("name")) #小明

print(dict1.get("id",110)) # 110

——————————————————

(2) keys():返回字典内的所有key 可用for遍历

print(dict1.keys())

返回 ["name","age","gender"]

for key in dict1.keys():

..print(key)

逐行输出name age gender

——————————————————

(3) values(): 返回字典内的值 可用for遍历

print(dict1.values())

返回["小明",18,"男"]

for value dict1.values():

..print(value)

逐行输出小明 18 男

——————————————————

(4) items():将字典内的数据以元组的形式返回

print(dict1.items()) 可用for遍历

返回[("name","小明"),("age",18),("gender","男")]

for item in dict1.items():

..print(item)

逐行输出 ("name","小明") ("age",18)("gender","男")

——————————————————

遍历字典键值对(拆包) 可在for内使用两个临时变量

dict1={"name":"小明","age":18,"gender:男"}

for key,value in dict1.items():

..print(f"{key}=value")

逐行输出:

name=小明 age=18 gender=男