Python - 基础数据类型 tuple 元组
元组简单介绍
- 元组是一个和列表和相似的数据类型,也是一个有序序列
- 两者拥有着基本相同的特性,但是也有很多不同的地方
声明元组
var = (1, 2, 3)
var = ("1", "2", "3")
var = (True, False)
var = (1.1, 1.11, 1.111)
var = ((1,), (2, 3), (4, 5))
var = ([1, 2], {"name": "polo"})
元组与列表的区别
元组与列表很相似,都是有序的只读序列,两者有相同的方法和操作运算,区别在于:
- 列表创建后,可以进行修改
- 元组创建后,不能进行修改
lis = [1, 2, 3]
lis[0] = 111
print(lis) tupl = (1, 2, 3)
tupl[0] = 2 # 输出结果
Traceback (most recent call last):
File "/Users/polo/Documents/pylearn/第一章:python 基本类型/6_tuple元组.py", line 21, in <module>
tupl[0] = 2
TypeError: 'tuple' object does not support item assignment
究极原因在于
列表是可变对象,而元组是不可变对象,具体详解可以参考
https://www.cnblogs.com/poloyy/p/15073168.html
特殊的元组
如果一个元组没有包含任何元素,使用 () 表示一个空元组
# 空
tup = ()
print(tup, type(tup)) # 输出结果
() <class 'tuple'>
如果一个元组只包含一个元素,要怎么表示?
# 只包含一个元素
tup = (1)
print(tup, type(tup)) # 输出结果
1 <class 'int'>
哎!竟然是 1,好像是哦,( ) 就是数学运算常见的括号呀,那到底要怎么表示呢
正确表示元组只包含一个元素
# 正确
tup = (1,)
print(tup, type(tup)) # 输出结果
(1,) <class 'tuple'>
需要在元素后加一个逗号,使用 (item, ) 表示该元组
总结
- (123, ) 表示的是一个元组,元组中包含一个整数 123
- (123) 表示的是一个带括号的表达式,整数 123 嵌入括号中
元组的简写
当元组在 = 右边的时候,可以省略括号
# 等价写法
a = 1, 2
print(a, type(a))
a = (3, 4)
print(a, type(a)) a = 1,
print(a, type(a))
a = (3,)
print(a, type(a)) # 输出结果
(1, 2) <class 'tuple'>
(3, 4) <class 'tuple'>
(1,) <class 'tuple'>
(3,) <class 'tuple'>
元组常见运算操作
索引 [ ] 取值
# 索引
tup = [1, 2, 3, 4, 5]
print(tup[0])
print(tup[-1])
print(tup[2]) # 输出结果
1
5
3
切片 [ : : ] 取值
- 和列表一样,元组也可以切片
- 使用语法:元组[start : end : step],获取元组中在 [start, end) 范围的子元组
- 注意范围 [start, end) 包含 start,不包含 end
- step 是步长,设为 n,则每隔 n 个元素获取一次
# 切片
tup = [1, 2, 3, 4, 5, 6, 7, 8]
print(tup[:]) # 取全部元素
print(tup[0:]) # 取全部元素
print(tup[2:5]) # 取第 3 个元素到第 5 个元素
print(tup[::-1]) # 倒序取所有元素
print(tup[-3:-1]) # 取倒数第 3 个元素到倒数第 2 个元素 # 输出结果
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
[3, 4, 5]
[8, 7, 6, 5, 4, 3, 2, 1]
[6, 7]
运算符 +
使用运算符 + 连接多个元组
# +
tup1 = (1,)
tup2 = (2, 3)
print(tup1 + tup2) # 输出结果
(1, 2, 3)
运算符 *
使用运算符 * 将元组的元素重复
# *
tup = (1, 2)
print(tup * 2) # 输出结果
(1, 2, 1, 2)
关键字 in
- 通过关键字 in 检查列表中是否包含指定元素,返回 bool 值
- not in 则是取反
# in
tup = (1, 2, 3)
print(1 in tup)
print(22 not in tup) # 输出结果
True
True
常见函数
len(元组) 函数
# len
tup = (1, 2, 3)
print(len(tup)) # 输出结果
3
max(元组) 函数
# max
tup = (1, 2, 3)
print(max(tup)) # 输出结果
3
min(元组) 函数
# min
tup = (1, 2, 3)
print(min(tup)) # 输出结果
1
元组常见方法
元组与列表很相似,两者都表示一个有序的序列,它们的区别在于:
- 列表创建后,可以进行修改
- 元组创建后,不能进行修改
这点在可变对象、不可变对象文章都写了
index(item)
- 在元组中查找指定元素 item
- 如果找到元素 item,则返回元素 item 的索引
- 如果找不到,则抛出异常
# index
tup = (1, 2, 3)
print(tup.index(1))
print(tup.index(11)) # 输出结果
0
Traceback (most recent call last):
File "/Users/Documents/pylearn/第一章:python 基本类型/6_tuple元组.py", line 88, in <module>
print(tup.index(11))
ValueError: tuple.index(x): x not in tuple
count(value)
返回元素 value 在元组中出现的次数
# count
tup = (1, 2, 1)
print(tup.count(1))
print(tup.count(11)) # 输出结果
2
0
元组总结
因为元组是不可变对象,所以元组一般适合用来存储不变的数据
Python - 基础数据类型 tuple 元组的更多相关文章
- Python基础数据类型-列表(list)和元组(tuple)和集合(set)
Python基础数据类型-列表(list)和元组(tuple)和集合(set) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的 ...
- python基础数据类型--元组(tuple)
python基础数据类型--元组(tuple) 一.元组的定义和特性 定义:与列表相似,只不过就是将[ ] 改成 ( ) 特性:1.可以存放多个值 2.不可变 3.按照从左到右的顺序定义元组元素,下标 ...
- Python 入门之Python基础数据类型及其方法
Python 入门之Python基础数据类型 1. 整型:int 用于计算,用于比较 (在赋值的时候先执行等号右边的内容) 1.1 整数的加 a = 10 b = 20 print(a + b) 结果 ...
- 图解python | 基础数据类型
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...
- python基础数据类型1
python基础数据类型1 part1: ''' ''': 三个单引号用于换行的字符串 字符串可以相加(拼接)相乘(重复) 在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代 ...
- python 基础数据类型之list
python 基础数据类型之list: 1.列表的创建 list1 = ['hello', 'world', 1997, 2000] list2 = [1, 2, 3, 4, 5 ] list3 = ...
- 老男孩Python==基础数据类型考试题
转载 # Python基础数据类型考试题 # 考试时间:两个半小时 满分100分(80分以上包含80分及格) # 一,基础题. # 1, 简述变量命名规范(3分) # 1.变量由字母.数字.下划线任意 ...
- Python基础-列表、元组、字典、字符串
Python基础-列表.元组.字典.字符串 多维数组 nums1 = [1,2,3] #一维数组 nums2 = [1,2,3,[4,56]] #二维数组 nums3 = [1,2,3,4,['a ...
- Python基础------列表,元组的调用方法
Python基础------列表,元组的调用方法@@@ 一. 列表 Python中的列表和歌曲列表类似,也是由一系列的按特定顺序排列的元素组成的,在内容上,可以将整数,实数,字符串,列表,元组等任何类 ...
随机推荐
- 干货!MySQL 的 InnoDB 存储引擎是怎么设计的?
MySQL 里还有什么其他成员呢? 对于 MySQL,要记住.或者要放在你随时可以找到的地方的两张图,一张是 MySQL 架构图,另一张则是 InnoDB 架构图: 遇到问题,或者学习到新知识点时,就 ...
- [非专业翻译] 高性能对象映射框架 - Mapster
[非专业翻译] 高性能对象映射框架 - Mapster 系列介绍 [非专业翻译] 是对没有中文文档进行翻译的系列博客,文章由机翻和译者自己理解构成,和原文相比有所有不通,但意思基本一致. 因个人能力有 ...
- 【模拟】10-15 题解 trans
Trans 题目描述 Tgopknight决定使用他的幸运数字2和3来进行这个游戏,他一开始有n个数字,记为{dn}需要 进行k次操作,每次操作找到最小的x使得dx = 2并且dx+1 = 3,此时如 ...
- 如何开启O2优化
O2环境会使你的程序跑的特别快,然而大多数正式考试都不能开O2 然而平时做有些题强制开O2,会出现在本机运行正确,但是交上去RE的情况,这时你就要开O2了. 例如在本机运行时会有下标为-但可以运行,而 ...
- [INS-32033] Central Inventory location is not writable
这个是因为之前安装过一次图形界面,已经创建过Inventory,所以会报错. 解决:删除oraInventory这个目录.
- golang中的defer和return的执行顺序
结论 go中是先给return准备返回值,再根据defer先进后出的规则执行,最后将返回值返回给调用者 测试用例1验证分析 代码片段如下: func foo_1() (err error) { def ...
- 『心善渊』Selenium3.0基础 — 8、使用CSS选择器定位元素
目录 1.CSS选择器介绍 2.CSS选择器定位语法 3.Selenium中使用CSS选择器定位元素 (1)通过属性定位元素 (2)通过标签定位元素 (3)通过层级关系定位元素 (4)通过索引定位元素 ...
- 20204107 孙嘉临《Python程序设计》实验一报告
课程:<python程序设计> 班级:2041 姓名:孙嘉临 学号:20204107 实验教师:王志强 实验日期:2021年4月12日 必修/选修:公选课 ##一.实验内容 1.熟悉Pyt ...
- <5人公司极简研发方案
人过35,被年轻人卷走了一大半,还停留在这个行业的,不是在创业,就是在创业的路上. 创业很难,刚开始没钱没人,啥都要自己干,一个字累.好处是地基是自己搭的,心里有底.不过博主最近健忘的毛病愈发严重了, ...
- 利用C语言识别用户输入字符并且输出该字符ASCII码值(大小写字母篇)(含思路)
要求:从键盘输入一个字符,如果输入字符的是小写英文字母,则将其转换为大写英文字母,然后将转换后的英文字母及其ASCII码值输出到屏幕上,如果输入的是其他字符,则不转换并且直接将它及其ASCII码值输出 ...