原文 https://blog.csdn.net/ruanxingzi123/article/details/83184909
一 是什么?
# python 元组tuple? ''' 元祖tuple是什么? 是不可变的的对象 因为不可变,安全性高。 可以使函数返回多个值
用来记录多个值,当值没有改变的需求时。
元祖是有序的,不可变的。【元祖的指向不可变!】
''' # 返回多个值测试 def people(): name = 'haha' age = 14 return name, age # 返回两个值 name,age = people() # 获取参数 print(name) print(age)
# python 元组tuple? ''' 元祖tuple是什么? 是不可变的的对象 因为不可变,安全性高。 可以使函数返回多个值 ''' # 返回多个值测试 def people(): name = 'haha' age = 14 return name, age # 返回两个值 haha = people() # 获取参数, 直接用haha来接收。 print(haha) # 看是否能够获得name age 的值 print(type(haha)) # 查看haha是什么类型
二 元祖的定义
三,不可变性
四 元祖的更新和删除
# python 元组tuple? ''' 元祖tuple是什么? 是不可变的的对象 因为不可变,安全性高。 可以使函数返回多个值 在()内用多个逗号分隔开多个任意类型的元素 元组用来记录多个值,当值没有改变的需求时,用元组更合适。 元组是有序的、不可变的(虽然数据不可变,但是数据的数据是可以改变的) 定义方式? 在()内用多个逗号分隔开多个任意类型的元素 demo = (1,2,3) demo2 = (1,) 逗号的存在,表明这是一个元祖 空元祖? demo3 = () 元祖的更新和删除 ? 更新 不能直接在元祖上更新,通过copy一个现有的元祖片段来构造一个新的元祖。 删除 元祖不可变,无法单独删除元素,通过使用切片的方式更新元祖,间接删除。 ''' test = (1, 2, 3) print(test) # (1, 2, 3) # 更新 试图通过构造的方式 把元素4 加入到元祖test中 test = test[:0] + (4,) + test[0:] print(test) # (4, 1, 2, 3) # 删除 切片的方式删除元素[1] test = test[:1] + test[2:] print(test) # (4, 2, 3) 通过更新和删除 就好像是将元祖中的元素【0】 修改为4 # 把元祖中的元素都删除掉 test = test[:0] + test[3:] print(test)
五 del 删除元祖
六 关系判断的使用 in , not in
七 如何理解元祖的指向不可变?
''' 一 元祖中的指向 这里定义了一个元祖 a 里面有三个元素 for 循环打印 1 指向 1 int 2 指向 2 int [4, 5, 6] 指向 3 list 可以看到 在 元祖a 中的数据类型是 两个int 一个list 元祖的不可变性在于,指向不可变,指向是int。那就是不可变的 ! 你非要 a [0] = 2; 就是报错的 然而 list 是可变的啊 所以 a[2][o] = 888 是没有问题的。 二 python中的数据类型 python中str,int,char,tuple本身就不可变, list,dict可变。 ''' a = (1, 2, [4, 5, 6]) print(type(a)) # 元祖的类型 typle for l in a: print(l) # 不可变测试 a[0] = 1111
测试list的可变行
''' 一 元祖中的指向 这里定义了一个元祖 a 里面有三个元素 for 循环打印 1 指向 1 int 2 指向 2 int [4, 5, 6] 指向 3 list 可以看到 在 元祖a 中的数据类型是 两个int 一个list 元祖的不可变性在于,指向不可变,指向是int。那就是不可变的 ! 你非要 a [0] = 2; 就是报错的 然而 list 是可变的啊 所以 a[2][o] = 888 是没有问题的。 二 python中的数据类型 python中str,int,char,tuple本身就不可变, list,dict可变。 ''' a = (1, 2, [4, 5, 6]) print(type(a)) # 元祖的类型 typle for l in a: print(l) # 改变元祖中的 list a[2][0] = 888 print(a)