Python:元组使用
元组(tuple)
(1)创建元组
(2)元组的使用
(3)打包和拆包
(4)元组的操作
创建元组
表达式:(元组对象,…)
描述元组时,有时也可以不写对象(e.g. (1,2,3)与 1,2,3 表示的是同一个元组)
空元组:tuple() 或者 ()
用类型名tuple创建元组:tuple(可迭代对象)
e.g.>>>tuple(range(10)) (0,1,2,3,4,5,6,7,8,9) >>>tuple('abc') ('a','b','c')
元组一旦创建后,便不能改变。
只包含一个元素的元组,必须写一个逗号,括号不重要,系统显示元组时,总有括号。若不加逗号,只有括号,e.g.(12),解释器将认为这里出现的是普通括号,表示运算顺序的优先结合,并不表示元组。
e.g.>>>x = 1, >>>x (1,) >>>('abc',) ('abc',) #此时‘abc’字符串为元组的一个元素
元组可以取下标,但是不能通过下标给元组中的不可变元素重新赋值
e.g.>>>tup = ('a','b','c') >>>tup[0] 'a' >>>tup[0] = 'd' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment
虽然元组本身不能改变,但是可以包含能改变的元素
e.g.>>>tup = (1,2,3,[1,2,3]) >>>tup[3][1] = 10 >>>tup (1,2,3,[1,10,3])
enumerate构造二元组的表,注意内置函数enumerate生成的是迭代器,并不真正生成结果的表,需要调用list得到表。
e.g.>>>seasons = ['Spring', ' Summer', 'Fall', 'Winter'] >>>enumerate(seasons) <enumerate object at 0x0000029D3B682990> >>>list(enumerate(seasons) [(0, 'Spring'), (1, ' Summer'), (2, 'Fall'), (3, 'Winter')]
调用enumerate函数得到元组的第一个元素下标为0,我们可以通过enumerate(seasons, start = 1)改变元素下标
e.g.>>>list(enumerate(seasons, start=1) [(1, 'Spring'), (2, ' Summer'), (3, 'Fall'), (4, 'Winter')]
元组的使用
元组是序列,因此也是可迭代对象。
- 元组可直接作为循环变量
e.g.>>> for x in 3.1, 4.0, 2.3, 5.5:print(x)
这里解释器会认为 in 后的是一个表达元组的表达式,可以加括号,也可以不加括号。
- 因为元组对象可以直接进行运算,因此任意表达式作为元组,也能使用 for 语句进行循环。
e.g.>>> for x in 3+1, sin(5), sqrt(4.7), 9.0:print(x)
打包和拆分
python支持打包(packing)和拆分(unpacking)的隐式动作
赋值中的打包和拆分
打包
e.g.>>> tp = 123,345,'and',567 #创建元租就是打包
即将对象123,345,‘and’,567打包成一个元组,做成一个整体的对象,赋值给 tp。
拆分
e.g.>>> a,b,c,d = tp
tp 由之前定义为(123,345,‘and’,567)四个元素的元组,给a,b,c,d赋值时解释器自动将元组拆开,把其中的元素分别按位置赋给四个变量,此时a,b,c,d的值为:
>>>a 123 >>>b 345 >>>c 'and' >>>d 567
要完成这种赋值,等号两边的变量个数必须正好相等,否则会报错
e.g.>>>tp = [1,2,3,4,5] >>>a,b,c,d = tp Traceback (most recent call last):File "<stdin>", line 1, in <module> ValueError: too many values to unpack (expected 4)
其实,各种序列都可以拆分,只要满足赋值语句两边的元素结构相同
e.g.>>> a,b,d = [1,2,3] #列表的拆分 >>> a,[b,c] = [1,(2,3)] #两层拆分 >>>a,(b,c),d = [1,(2,3),4]
函数的参数与元组
区分函数中的简单实参表达式和元组实参函数 实参意义 f1(a,b,c+1) 三个实参调用函数f1 f2((a,b,c+1)) 一个元组实参调用函数f2 f3(a,(b,c+1)) 两个实参调用函数f3,一个是简单实参a,另一个是元组, f4(2,3,) 两个实参调用函数f4,3后面的逗号被忽略,没有影响 f5(2,(3,)) 两个实参调用函数f5,一个是简单实参2,另一个是单元组 f6(2,(3)) ; f7(2,(x+1)) f6,f7都调用了两个实参,括号没有实际作用 带星号形参
在函数定义中,除了可以有前面介绍多的普通形参(可以带默认值)之外,还可以有一种能接受任意多个实参的形参。
形式:*形参名 (即在形参名前加一个星号)
其值为一些实参的元组。
在一个函数定义的参数表里只能有一个这样的形参
在函数调用时,带星号形参将约束到所有未能得到匹配的普通实参构成的元组,默认情况是约束到空元组(如果函数调用中没有未匹配的实参)
e.g.def mysum(*args):s = 0for x in args:s += xreruen s
调用函数
>>>print(mysum(1,2,3,4,5,6) 21 >>>print(mysum()) 0
注意:若函数形参表里的某个普通形参带有默认值,(即a=1的形式),位于其后直至带星号形参的所有普通形参都必须带默认值。若带星号形参后还有普通形参,函数调用时,必须用关键字实参的形式为他们提供实参。
e.g.>>>def f(a,b=3,c,*args): #将会报 SyntaxError >>>def f(a,b=3,c=4,*args): #允许 >>>def g(a,b=3,c=4,*args,d): >>>print(g(........,e=1)) #调用函数g时必须用关键字实参的形式给e提供实参,否则会报错
- 普通实参按位置与形参一一匹配
- 关键字实参按关键字与同名实参匹配
- 没得到实参但有默认值的形参取其默认值为实参
- 前面匹配剩下的普通实参做成一个元组约束到带星号形
拆分实参
在实参表达式前加*,表达式应为一个可迭代对象(表或者元组),来表示实参对象。解释器会将这个对象拆分,用其元素为函数提供若干个实际的实参。
调用前面定义的mysum函数进行解释:>>> a = 1,2,3,4,5,6 >>>print(mysum(*a)) 21
也可用于为多个循环统一描述对象:
>>> b = [0,20,3] >>> for i in range(*b): #等同于for i in range(0,20,3)
元组的操作
序列 | 表达式 | 意义 |
---|---|---|
1 | s.count(x) | x在s中出现的次数 |
2 | s.index(x[,i[,j]] | x在s中首次出现的下标 |
3 | max(s) ; min(s) | s中的最大元素;s中的最小元素 |
4 | len(s) | s的长度 |
Python:元组使用相关推荐
- python元组(tuple)使用示例+常用方法+列表(list)和元组(tuple)的异同?
python元组(tuple)使用示例+常用方法+列表(list)和元组(tuple)的异同? 元组(tuple) # 元组类似列表,元组里面的元素也是进行索引计算. # 列表里面的元素的值可以修改, ...
- python 元组传参 *args 字典传参 **kwargs 的用法
python 元组传参 *args 字典传参 **kwargs 的用法 # 元组参数 def func_arg(*args):print("args:", args) func_a ...
- 熟练掌握python是什么概念-想要熟练掌握Python元组?你需要了解这10件应知事项...
本文转载自公众号"读芯术"(ID:AI_Discovery) 人生苦短,Python是岸. 作为一种通用编程语言,Python已成为各学术和工业领域中最流行的语言之一. 此前,IE ...
- Python元组与字典详解
Python 元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 如下实例: tup ...
- Lesson 016 —— python 元组
Lesson 016 -- python 元组 Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔 ...
- python 元组使用_Python3
Python3 元组 Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号 ( ),列表使用方括号 [ ]. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. ...
- python元组类型_什么是python元组数据类型
什么是python元组数据类型 发布时间:2020-08-25 11:46:29 来源:亿速云 阅读:68 这篇文章运用简单易懂的例子给大家介绍什么是python元组数据类型,代码非常详细,感兴趣的小 ...
- python元组的创建取值排序计数_Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】...
本文实例讲述了Python元组 tuple的概念与基本操作.分享给大家供大家参考,具体如下: 元组 tuple 元组 tuple的定义 元组的创建 元组的元素访问和计数 1. 元组的元素不能修改 2. ...
- Python元组tuple(不可变)
Python元组Tuple(不可变): 元组的特点: 1.元组的初始化: tuple = (1, ) #元组只有一个元素的话,初始化时要加,否则当做元素的普通变量类型处理 tuple = (1, 2 ...
- python 元组和列表区别_Python干货整理:一分钟了解元组与列表使用与区别
元组是 Python 对象的集合,跟列表十分相似.下面进行简单的对比. 列表与元组 1.python中的列表list是变量,而元组tuple是常量. 列表:是使用方括号[],元组:则是使用圆括号() ...
最新文章
- 【LeetCode】87. Scramble String
- 树莓派小车参考方案,了解一下
- Virtual Machine Manager 2008 2008 R2系列之安装部署
- Open images from USB camera on linux using V4L2 with OpenCV
- 深度学习常见概念解析
- ORACLE物理DG日常管理
- mysql-ubuntu卸载安装mysql
- MYSQL在centos上主从配置
- 博文视点大讲堂36期——让Oracle跑得更快 成功举办
- [leetcode] Power of Two 判断一个数是否是2的平方
- 牛客网编程练习之编程马拉松:发工资
- CICD详解(十一)——sonar详解
- STM32串口通信UARTx
- 打印5列五颗星_55组“数学顺口溜”,孩子想学好数学必须背熟
- Bitbucket Cloud recently stopped supporting account passwords for Git authen报错解决
- java获取基金实时数据_JAVA爬取天天基金网数据
- EEG中的EOG伪迹
- 关于ROHDESCHWARZ公司电流探头EZ-17系数修正的说明 1
- 一维参照物的摄像机定标
- Django 搜索结果分页的实现 以及点击下一页搜索条件丢失可能的原因分析
热门文章
- 软件测试,别海投简历
- ios多线程浅谈和使用
- 你不具备访问 IIS 配置文件的权限。要在 IIS 上打开和创建网站,需要使用 Administrator 帐户运行 Visual Studio。
- virtualbox虚机硬盘扩容
- 从IDEA代码调试器的threads选项卡的一个细节谈如何学习编程
- python excel写入日期变数字_解决python 读取excel时 日期变成数字并加.0的问题
- DMOZ网站选择标准(转)
- 计算机端口里没有usb,解决打印机端口设置中没有USB选项的方法
- 2021常州市程序设计小能手真题及题解
- 全球人口突破80亿!免费分享全球人口分布数据