首页 > 编程语言 >python学习_元组

python学习_元组

时间:2023-07-31 14:13:56浏览次数:39  
标签:20 python id 元组 学习 print hello

一、什么是元组?

元组也是python内置的数据结构,是一个不可变的序列,他也可以存放不同数据类型的元素

不可变序列有:就是不可以改变的序列,没有增、删、改的操作,如元组、字符串就是不可变序列

可变序列:可以对序列进行增、删、改操作,对象地址不发生改变,如列表、字典等

'''不可变序列与可变序列
可变序列:列表、字典
不可变序列:字符串、元组
'''
lst=[10,20,30]
print(lst,id(lst))   #id=2813843628680
lst.append(60)
print(lst,id(lst))   #id=2813843628680,列表是可变序列,对列表进行增加操作,列表的内存地址不变

s='hello'
print(id(s))   #id:2392792986544
s=s+'world'
print(id(s))   #id:2392793796848,字符串为不可变序列,如果对字符串进行修改,字符串对象的内存地址发生了改变,变成了一个新的对象

二、元组的创建

元组的创建和列表类似,只不过列表用的是中括号[ ],元组用的是小括号( ),主要由以下几种情况:

  • 方式1:使用小括号( )创建元组
t=('hello',98,'python')
print(t)   #('hello', 98, 'python')
  • 方式2:使用内置函数tuple()创建元组
t=tuple(('hello',98,'python'))
print(t)   #('hello', 98, 'python')
  • 方式3::创建只有一个元素的元组
#创建只有一个元素的元组
t=('hello',)
print(t,type(t))   #('hello',) <class 'tuple'>
  • 方式 4:创建空元组
#创建空元组
t=()
print(t,type(t))   #() <class 'tuple'>

 

'''元组的创建方式'''
'''方式一:()'''
t=('python','world',98)
print(t,type(t))   #('python','world',98)  <class 'tuple'>
t2='python','world',98   #元组也是可以省略了小括号()的
print(t2,type(t2))
#当元组只有一个元素时 t3=('python') print(t3,type(t3)) #python <class 'str'> t4=('python',) print(t4,type(t4)) #('python',) <class 'tuple'> #通过t3和t4可知,元组只有一个元素时后面的逗号必须加上 '''方式二:内置函数tuple()''' t1=tuple(('world','hahah',55)) print(t1,type(t1)) '''空元组的创建''' tt=() tt1=tuple() print(tt) print(tt1)

三、为什么要将元组设计成不可变序列

将元组设计成不可变序列是因为在多任务环境下,同时操作对象时不需要加锁,因此,在程序中尽量使用不可变序列

元组中存储的是对象的引用,他的内存示意图如下:

注意:

1)如果元素中对象本身是不可变对象,则不能在引用其他对象,如下内存示意图显示

t[0]存放的是不可变对象10,所以不能再修改为其他数据

2)如果元组中对象本身是可变对象,则可变对象的引用不允许改变,但是数据可以改变,如下内存示意图显示:

t[1]存放的是列表,是可变对象,所以可变对象的引用不允许改变,也就是t[1]=100是不可以的,但是可变对象列表中可以添加数据t[1].append(100)是可以的

t=(10,[20,30],9)
print(t,type(t))
print(t[0],type(t[0]),id(t[0]))
print(t[1],type(t[1]),id(t[1]))   #id:2541314269768
print(t[2],type(t[2]),id(t[2]))

'''尝试修改t[1]'''#t[1]=100    #TypeError,因为元组中的元素是不允许修改的

'''但是因为t[1]是一个列表,列表是可变的序列,所以我们可以往列表中添加内容,列表的内存地址不会发生改变'''
t[1].append(100)
print(t)    #(10, [20, 30, 100], 9)
print(id(t[1]))   #修改完数据后t[1]的内存地址应该是不变的,id:2541314269768

 四、元组的操作

  • 查询操作

t=(98,'hello',20,'python','FishC',100,20,300)
#获取元组单个元素
print(t[0])   #98
print(t[-1])  #300,逆序索引获取最后一个元素

#获取元组多个元素
print(t[::])     #(98, 'hello', 20, 'python', 'FishC', 100, 20, 300)
print(t[1::])    #('hello', 20, 'python', 'FishC', 100, 20, 300)
print(t[:4:])    #(98, 'hello', 20, 'python')
print(t[1:4:1])  #('hello', 20, 'python')
print(t[1:6:2])  #('hello', 'python', 100)
print(t[::-1])   #(300, 20, 100, 'FishC', 'python', 20, 'hello', 98)
print(t[6:1:-2]) #(20, 'FishC', 20)

#统计元素出现次数
print(t.count(20))  #2
print(t.count('python')) #1

#获取元素索引值
print(t.index('FishC'))  #4
print(t.index(20))   #20
print(t.index(20,3,7))   #6
  • 运算符操作

s=(1,2,3)
t=(4,5,6)
print(s+t)   #(1, 2, 3, 4, 5, 6)
print(s*3)   #(1, 2, 3, 1, 2, 3, 1, 2, 3)
print(t*2)   #(4, 5, 6, 4, 5, 6)
  • 元组的嵌套:
#元组的嵌套
s=(1,2,3)
t=(4,5,6)
new_t=(s,t)
print(new_t)  #((1, 2, 3), (4, 5, 6))
  • 元组的遍历:

元组是一个可迭代对象,所以他也是可以用for...in循环进行遍历

'''元组的遍历'''

#单元组的遍历
t=('hello','world',98)
for item in t:
    print(item)

#嵌套元组的遍历
s=((1,2,3),(4,5,6))
for i in s:
    for each in i:
        print(each)
  • 利用列表推导式将元组转成列表
#利用列表推导式将元组转成列表
t=[1,2,3]
lst=[each*2 for each in t]
print(lst)  #[2, 4, 6]
  • 元组的打包和解包
#将一组数据组成一个元组就叫打包
t1=(123,'hello',3.14)    #打包
print(t1)
#将元组一次性赋值给多个变量的行为叫解包
x,y,z=t1   #解包
print(x)   #123
print(y)   #hello
print(z)   #3.14
注意:任何的序列类型的数据都适用这种打包和解包,同时解包时赋值号左边的变量数量必须和右边的元素个数一样
#列表的解包
lst=[123,'python',3.14]
x,y,z=lst
print(x)   #123
print(y)   #python
print(z)   #3.14

#字符串的解包
s='world'
a,b,c,d,e=s
print(a)   #w
print(b)   #o
print(c)   #r
print(d)   #l
print(e)   #d

也可以使用下面这种形式

s='world'
a,b,*c=s
print(a)  #w
print(b)  #o
print(c)   #rld

标签:20,python,id,元组,学习,print,hello
From: https://www.cnblogs.com/xnancy/p/17346776.html

相关文章

  • 怎么学习C语言,才能快速掌握?
    有多年软件行业经验,期间参与过多个C语言项目。要掌握一门编程语言,仅仅投入时间学习是不够的,关键在于实际项目经验。在没有真正实战经验之前,不宜轻易声称掌握某种编程语言,因为编程是积累性的工作,理论知识重要但实践更为关键。学习任何编程语言都需要先掌握理论基础,然后通过项目实战......
  • python Pycharm出现“can't find '__main__' module”解决方案
    是配置没配对,因为在配置时没有选择.py文件,而只选择了工程名。因此选择EditConfigurations。选择EditConfigurations后,查看Scriptpath只选择了工程名innerfuns,而这里应该要选择工程名里面的.py文件(main函数,如果没有,选择你要执行的.py文件)。最终可运行成功......
  • Python第一天
    1、变量名-字母-下划线-数字注:不能是关键字、不能数字开头、不要和内置的东西重复补充:变量名尽量写的有意义,对变量名所指向的东西尽量看名字可识别。技巧:变量名可以用单词,另外用下划线进行断句,已表示清楚(还有可以用首字母大写进行断句,python用下划线比较清晰) 2、字符串1......
  • mobaxterm python
    实现MobaxtermPython的步骤1.下载和安装Mobaxterm首先,你需要下载并安装Mobaxterm,它是一个功能强大的终端仿真器和X服务器,可在Windows上运行。你可以在Mobaxterm的官方网站(2.打开Mobaxterm安装完成后,打开Mobaxterm。你将看到一个类似于命令行的界面,其中包含一个终端窗口和一......
  • mmap python
    mmap在python中的使用简介在Python中,我们可以使用mmap模块来实现内存映射。内存映射是一种将文件映射到内存的方法,使得我们可以像操作内存一样操作文件。这在处理大型文件时非常有用,可以提高文件的读写速度。整体流程下面是实现mmap的整体流程,我们将分为以下几个步骤:步骤......
  • Java学习
    数据类型整数类型:byte1个字节,short2个字节,int3个字节,long8个字节。浮点类型:float4个字节,double8个字节,字符类型:char2个字节银行业务不能用浮点数进行比较,用BigDecimal(数学工具类)所有的字符本质上还是数字。转义字符:\t制表符空格\n换行类型转换:由低到高b......
  • 站桩学习整理
    姿势调整由下至上双脚分开,略宽于肩膀,脚尖向前膝盖微曲(方便大腿内侧发力,也能防止盆骨前倾)大腿内侧肌肉收缩(不用太大的力,但是需要收缩)注意盆骨千万不要前倾,胯微下坐,因为膝盖微曲,自然会微微下坐,且大腿内侧用了,会支撑住保持脊柱挺直,在放松的前提下挺到最直,要是用力挺容易累双手......
  • Python工具箱系列(三十九)
    使用zlib对数据进行压缩现实世界中,大量存在着对数据压缩的需求。为此,python内置了zlib压缩库,可以方便的对任意对象进行压缩。下述代码演示了对字符串进行压缩:importzlib#压缩一段中文originstr='神龟虽寿,犹有竟时;腾蛇乘雾,终为土灰。老骥伏枥,志在千里;烈士暮年,壮心不已。......
  • python 类命名
    Python类命名的流程在Python中,命名类是编写面向对象程序的基本步骤之一。一个类是一个蓝图或模板,用于创建具有相同属性和方法的对象。下面是一个简单的流程图,展示了如何命名Python类的步骤:步骤内容1确定类的目的和功能2选择合适的类名3使用驼峰命名法命名类......
  • python 快速创建大文件
    Python快速创建大文件在处理大数据集时,我们有时需要创建大文件进行测试、模拟或其他目的。Python作为一门功能丰富且易于上手的语言,提供了多种方法来快速创建大文件。本文将介绍几种常用的方法,并提供相应的代码示例。方法一:使用os模块写入随机数据importosdefcreate_large_f......