Tuple使用:与列表类似的存储空间,只是内容不允许修改

创建

tuplename=(element1,element2,……,elementn)

其中,tuplename表示变量名,element表示元组的元素

(与列表注意区分开,列表为方括号[],元组则为圆括号())

lst=[1,2,3,4,5]
print(lst)tup1=(1,2,3,4,5)
print(tup1)>>>
[1, 2, 3, 4, 5]
(1, 2, 3, 4, 5)

注意的一点是:当创建的元组中只有一个元素时,该元素后面必须要加一个逗号,

否则python解释器会识别为字符串

tup1=(1)
print(tup1)tup2=(1,)
print(tup2)>>>
1
(1,)

其他创建方式

使用tuple()函数创建元组

tup1=tuple(data) 其中data表述可以转换为元组的数据(包括字符串、元组、range等)

lst=[0,1,2,3,4,5]           #将列表转换为元组
tup1=tuple(lst)
print(tup1)
>>>
(0, 1, 2, 3, 4, 5)tup1=tuple(range(7))      #将range范围转换为元组
print(tup1)
>>>
(0, 1, 2, 3, 4, 5, 6)t=('a','b','c')         #将元组用函数转换
tup1=tuple(t)
print(tup1)
>>>
('a', 'b', 'c')

Tuple可以看作是一种“不变”的list,访问也是通过下标访问,使用[]进行访问

但是不能重新赋值,也没有pop、insert、append方法

tup1=(3.14,'jack','rose',2,5)
print(tup1)                     #输出元组的所有内容
>>>
(3.14, 'jack', 'rose', 2, 5)tup1=(3.14,'jack','rose',2,5)
print(tup1[0])                    #使用下标进行访问,只是输出不允许修改
>>>
3.14        tup1=(3.14,'jack','rose',2,5)
str=tup1[1]
print(str)                  #只是输出,不允许修改
>>>
jacktup1=(3.14,'jack','rose',2,5)
print(tup1)tup1[1]="mark"                  #修改失败,元组不允许重新赋值替换
print(tup1)
>>>
(3.14, 'jack', 'rose', 2, 5)
Traceback (most recent call last):File "D:\pythonProject\demo3.py", line 27, in <module>tup1[1]="mark"
TypeError: 'tuple' object does not support item assignment     #不允许修改的提示

增加(拼接)操作

可以创建空元素的tuple:t=()

或者单元素tuple(加一个逗号):t=(3.14,)

t0=("A","B")
t1=(1,2,3)
t2=t0+t1       #依靠拼接完成增加操作
print(t2)
t3=("x",)
t4=t2+t3
print(t4)
>>>
('A', 'B', 1, 2, 3)
('A', 'B', 1, 2, 3, 'x')

删除对象操作(没有直接删除方法)

t0=("A","B")
print(t0)del t0                   #对象删除,没有直接删除元素操作
print(t0)
>>>
('A', 'B')
Traceback (most recent call last):File "D:\pythonProject\demo3.py", line 37, in <module>print(t0)
NameError: name 't0' is not defined

间接修改操作(没有直接修改方法)

t=(1,2,3,'mark','rose',[3.14,12,13,"a"])
print(t)
t[0]=11        #修改失败,不可直接进行修改
print(t)
>>>
(1, 2, 3, 'mark', 'rose', [3.14, 12, 13, 'a'])
Traceback (most recent call last):File "D:\pythonProject\demo3.py", line 47, in <module>t[0]=11
TypeError: 'tuple' object does not support item assignment
#元组部分内容转为列表,(间接修改)在列表内进行修改,最后直接输出元组
t=(1,2,3,'mark','rose',[3.14,12,13,"a"])
print(t)
L=t[5]
L[0]=11
L[1]=22
print(t)
>>>
(1, 2, 3, 'mark', 'rose', [3.14, 12, 13, 'a'])
(1, 2, 3, 'mark', 'rose', [11, 22, 13, 'a'])

查询操作

1.数组下标

t=(1,2,3,'mark','rose',[3.14,12,13,"a"])
print(t[2])
>>>
3

2.切片操作(左闭右开区间)

t=(1,2,3,'mark','rose',[3.14,12,13,"a"])
print(t[2:5])
>>>
(3, 'mark', 'rose')

3.遍历操作

t=(1,2,3,'mark','rose',[3.14,12,13,"a"])
for x in t:print(x)
>>>
1
2
3
mark
rose
[3.14, 12, 13, 'a']

重复内容操作

t=(1,2,3,'mark','rose',[3.14,12,13,"a"])
print(t*3)
>>>
(1, 2, 3, 'mark', 'rose', [3.14, 12, 13, 'a'], 1, 2, 3, 'mark', 'rose', [3.14, 12, 13, 'a'], 1, 2, 3, 'mark', 'rose', [3.14, 12, 13, 'a'])

in成员操作符判断是否在元组中

t=(1,2,3,'mark','rose',[3.14,12,13,"a"])
print(1 in t)
print(11 not in t)
>>>
True
True

计数和索引值

t=(1,2,3,'mark','rose',1,[3.14,12,13,"a"])
print(t.count(1))            #计算t中符合指定元素1的数量
print(t.index('mark'))       #打印第一个符合元素项的下标值
>>>
2
3

python自带垃圾回收功能,会自动销毁不用的元组,所以一般不需要通过del进行手动删除

特性

python中往往会将有逗号连接的量视为元组,即使外边没有圆括号

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

这在某些场合可以用来快速交换数据

x,y=y=x

x,y,z=z,y,x

x=1
y=2
print(x,y)
x,y=y,x
print(x,y)
>>>
1 2
2 1x=1
y=2
z=3
print(x,y,z)
x,y,z=z,y,x
print(x,y,z)
>>>
1 2 3
3 2 1

在开发中,更多的应用场景是:

函数的参数和返回值,一个函数可以接受任意多个参数,或者一次返回多个数据

格式字符串,格式化字符串后面的()本质上就是一个元组

格式化字符串后的()本质上就是元组

#没有括号的话会报错
print("%s 年龄是 %d 身高是 %.2f" % ("小明",18,1.75))
>>>
小明 年龄是 18 身高是 1.75

定义一个元组,验证一下,输出的结果与上面一致

info_tuple_02=("小明",18,1.75)
print("%s 年龄是 %d 身高是 %.2f" % info_tuple_02)
>>>
小明 年龄是 18 身高是 1.75

使用格式字符串,拼接生成一个新的字符串

info_tuple_02=("小明",18,1.75)
str1="%s 年龄是 %d 身高是 %.2f" % info_tuple_02
print(str1)
>>>
小明 年龄是 18 身高是 1.75

练习题

tup=(“nihao”,“wohao”,“dajiahao”)

1.计算元组长度并输出

tup=("nihao","wohao","dajiahao")
print("len =",len(tup),tup)
>>>
len = 3 ('nihao', 'wohao', 'dajiahao')

2.获取元组第二个元素并输出

tup=("nihao","wohao","dajiahao")
print(tup[1])
>>>
wohao

3.获取元素第2-3个元素并输出

tup=("nihao","wohao","dajiahao")
print(tup[1:3])
>>>
('wohao', 'dajiahao')

4.使用for循环遍历输出元组

tup=("nihao","wohao","dajiahao")
for x in tup:print(x)
>>>
nihao
wohao
dajiahao

5.使用for、len、range输出元组的索引

tup=("nihao","wohao","dajiahao")
print("len =",len(tup))
for x in range(0,len(tup)):print(x,tup[x])
>>>
0 nihao
1 wohao
2 dajiahao

6.将元组中元素第一个与最后一个交换后整体输出

tup=("nihao","wohao","dajiahao")
x=tup[0]
y=tup[1]
z=tup[2]
x,z=z,x
print(x,y,z)
>>>
dajiahao wohao nihao

python基础——数据结构之元组相关推荐

  1. Python基础 - 数据结构

    Python基础 - 数据结构 列表 简单示例 >>> fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', ...

  2. Python基础类型之元组

    Python基础类型之元组 一.元组的介绍 二.元组的使用 三.元组不可变特性 1.不可修改 2.元组的第一层不可变 四.单独元素的使用 一.元组的介绍 1.Python的元组与列表类似,不同之处在于 ...

  3. Python基础数据结构之大循环(for list,set,dict,tuple)

    本章是Python基础数据结构的第六篇,由于之前没有接触过太多的Python版本的数据结构,所以在学习的过程中集百家之长和自己的见解,加以实践,学习Python. Python中用到tuple的方法, ...

  4. python基础数据结构

    python基础复习 chapter1 变量和数据类型 变量 变量命名:只能包含字母,数字,下划线,开头不能使用下划线. 注解:不要用python的关键字和函数命名变量名 数据类型 1. 字符串 在p ...

  5. Python基础入门006_元组

    目录 1. 创建和访问一个元组 2.更新和删除一个元组 3. 元组相关的操作符 4.内置方法 5. 解压元组 1. 创建和访问一个元组 Python 的元组与列表类似,不同之处在于tuple被创建后就 ...

  6. Python 基础数据结构

    Python 是一种跨平台的计算机程序设计语言,是一种面向对象的动态类型语言,笔记内容包括编译安装python,python列表,字典,元组,文件操作等命令的基本使用技巧. ◆编译安装 Python◆ ...

  7. Python基础|理解元组存在的意义

    Python中有一个基础的数据结构,叫做元组(tuple),但是一般挺少有人会到到它的,因为基本上在开发过程中,列表(list)已经能够满足我们的基本需求了. 即使是这样,你也千万不要就此认为元组是多 ...

  8. 二、python基础(列表、元组、字符串、集合、字典、文件操作,函数基本语法及特性)...

    本节内容 列表.元组操作 字符串.列表.字典.集合操作 文件操作 函数基本语法及特性 一.列表.元组操作 列表是我们最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作: 列表操作:切 ...

  9. Python基础教程:元组详细使用

    元组 元组和列表类似,但属于不可变序列,元组一旦创建,用任何方法都不可修改其元素. 元组的定义方式和列表相同,但定义时所有元素是放在一对圆括号"()"中,而不是方括号中. 1.元组 ...

最新文章

  1. Print all attributes and values in a Javascript Object
  2. java implements interface_Java 接口 interface implements
  3. Caddy-基于go的微型serve用来做反向代理和Gateway
  4. Python学习:字典
  5. HTML转PDF(C#---itextsharp)(转自别人的文章)
  6. LeetCode算法题-Repeated String Match(Java实现)
  7. bind 0.0.0.0的作用是什么呢?
  8. c++代码整洁之道pdf_别再问如何用python提取PDF内容了
  9. 武大金融工程和计算机专业,求解!武大的金融工程可以排第几
  10. hive表存储格式的转化
  11. python 自动化测试面试题及答案_自动化测试面试题及答案
  12. 被亚马逊下架含18650锂电池产品
  13. 14-CompletableFuture异步编排
  14. Android Notification使用
  15. ldc java_java-如何在Jasmin中使用“ ldc_w”避免“常量...
  16. 【GA】Genetic Algortihm(A)
  17. 重力感应失灵/更新win10后不能自动旋转屏幕
  18. 如何设置微信公众号粉丝关注后自动推送小程序
  19. 华数机器人旋转编程_用户手册-华数机器人.PDF
  20. vSphere6.7环境搭建

热门文章

  1. 清空KindEditor编辑器内容
  2. Unity3D学习—牧师与魔鬼—MVC模式和ECS架构应用
  3. 关闭centos7下哔哔声
  4. C++ 获取本机所有的网卡配置、IP地址和Mac地址
  5. linux报错Loading mirror speeds from cached hostfile解决方法
  6. 杂篇-01-Unity中创建Mesh时遇到的问题
  7. PHP+Mysql—留言管理系统网站(前端+后端、整套源码)
  8. Oracle 实验三: SQL语句基础(复习)
  9. 服务端分布式缓存与本地缓存
  10. 干货 | 科研人的KPI怎么算,H指数和G指数是什么