我在偷偷学Python的第十一天(Python 元组(Tuple)操作)

本文详细介绍了Python中的元组与列表的区别,强调元组的不可变性。内容包括元组的基本操作,如计数、索引、创建、删除以及与其他数据结构的交互。还探讨了元组陷阱,即元组内的可变对象(如列表)虽然不能改变引用,但其内容可以变化。最后提到了元组在保证代码安全性和效率上的作用。
部署运行你感兴趣的模型镜像

元祖和列表的区别

一、二者区别

列表:
1.可以增加列表内容 append
2.可以统计某个列表段在整个列表中出现的次数 count
3.可以插入一个字符串,并把整个字符串的每个字母拆分当作一个列表段追加到列表当中 extedn
4.可以查询某个列表段在整个列表的位置 index
5.可以在指定位置插入一个列表段 insert
6.可以删除列表的最后一个列表段 pop
7.可以删除指定列表中的某个列表段 remove
8.可以正向反向排序 reverse
9.可以按字母或数字排序 sort
10.定义列表时候使用中括号"[]" 注意:在列表当中,假如某两个列表段相同,不管是使用index还是remove都是统计的最靠前的列表段

元组:
1.可以统计某个元组段在整个元组中出现的次数 count
2.可以查询某个元组段在整个元组中的元组号 index
3.定义元组时候使用小括号"()"

元祖的使用方法

元祖中只包含一个元素时,需要在元素后面添加逗号来消除歧义

  • 创建元祖*
one =1,) #一个元素
one = ()	#空元祖
  • 查询元祖*
test_1 = (1,2,3,4,1,1,2,5,6)      #定义元祖
test_2 = ('小羊','小猪','小驴','小胖子','小鸟')
print(test_1[1],test_2[1])      #元祖查询
  • 修改元祖

元组中的元素值是不允许修改的
在这里插入图片描述
可以通过del 来删除整个元祖

test_1 = (1,2,3,4,1,1,2,5,6)      #定义元祖
test_2 = ('小羊','小猪','小驴','小胖子','小鸟')
#print(test_2)	#在这里是可以输出元祖test_2 
del test_2		#删除元祖
print(test_2)	#执行报错

在这里插入图片描述
元祖可以通过两个相加组成一个新的元祖

test_1 = (1,2,3,4,1,1,2,5,6)      #定义元祖
test_2 = ('小羊','小猪','小驴','小胖子','小鸟')
print(test_2+test_1)
#输出结果('小羊', '小猪', '小驴', '小胖子', '小鸟', 1, 2, 3, 4, 1, 1, 2, 5, 6)
  • 元组索引,截取

1.list[:3] #顾头不顾尾,如果开始的下标不写的话,那么就是从最前面开始

2.list[-1] #-1代表最后一个元素

3.list[1:] #如果下标不写的话,代表取到最后

4.list[:] #开头的下标和结尾的下标都不写的话,代表取整个list

5.list[-6:-10:-1] #第二个冒号后面值代表步长,是隔几个元素取一次,步长是负数的话,从右往左开始取值

6.list[::-1] #将列表里的元素都取出来了,但是顺序是之前的倒过来,因为步长是负数

看代码

teast = (1,2,3,4)
print(teast[1])     #2
print(teast[-1])    #4 -1就是从后往前数第一个 没有0
print(teast[:])    #(1, 2, 3, 4)  输出出全部的元素
print(teast[1:])    #(2, 3, 4) 顾头不顾尾
print(teast[:3])    #(1, 2, 3)  顾尾不顾头
print(teast[::-1])  #(4, 3, 2, 1)  倒过来输出全部元素
print(teast[2:4])   #(3, 4) 输出2-4 2=0 所以不输出出来
print(teast[1::-1]) #(2, 1) 1,2倒过来输出

牵索

tuple_1 = ('a','b','c','d','e','f','g','h')
print(tuple_1[0])
# a
print(tuple_1[3])
# d
print(tuple_1[7])
# h

# 当索引下标为负数时,-1表示最右端元素,从右向左依次递减
print(tuple_1[-1])
# h
print(tuple_1[-4])
# e
  • 元组内置函数
    Python元组包含了以下内置函数
    1、cmp(tuple1, tuple2):比较两个元组元素。
    2、len(tuple):计算元组元素个数。
    3、max(tuple):返回元组中元素最大值。
    4、min(tuple):返回元组中元素最小值。
    5、tuple(seq):将列表转换为元组。

  • 另一种解读
    tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字:

 classmates = ('Michael', 'Bob', 'Tracy')

现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法。
其他获取元素的方法和list是一样的,你可以正常地使用classmates[0],classmates[-1],但不能赋值成另外的元素。
不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。
如果可能,能用tuple代替list就尽量用tuple。
tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,比如:

 t = (1, 2)
 print(t)
(1, 2)

来看一个“可变的”tuple:

t = ('a', 'b', ['A', 'B'])
t[2][0] = 'X'
t[2][1] = 'Y'
print(t)
('a', 'b', ['X', 'Y'])

这个tuple定义的时候有3个元素,分别是’a’,'b’和一个list。不是说tuple一旦定义后就不可变了吗?怎么后来又变了?
别急,我们先看看定义的时候tuple包含的3个元素:
在这里插入图片描述

当我们把list的元素’A’和’B’修改为’X’和’Y’后,tuple变为:

在这里插入图片描述
表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向’a’,就不能改成指向’b’,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。

Time:2020/11/30
Name:Eamonze

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值