资讯专栏INFORMATION COLUMN

详解Python中元组的三个不常用特性

89542767 / 195人阅读

  Python元素的内容还是比较的复杂的,里面包含有很多的不同特性,不同特性之间,其用法也是不一样的。那么,其中它的三个不同特性之间,里面的内容是什么呢?下面就给大家详细的解答下。


  1.引言


  元组是Python中一种重要的内置数据类型。与列表一样,我们经常使用元组将多个对象保存为相应的数据容器。然而,与列表不同的是元组的不变性——一个不可改变的数据序列。


  2.举个例子


  下面的代码片段向我们展示了元组的一些常见用法。


  response=(404,"Can't access website")
  response_code=response[0]
  response_data=response[1]
  assert response_code==404
  assert response_data=="Can't access website"


  上述代码段对我们来说功能很简单。我们使用一对括号来创建一个元组对象,将不同元素括起来。我们可以通过索引来访问元组中的单个元素。


  除了上述元组的基本用法外,元组还具有其他鲜为人知的用法。让我们在本文中回顾一下。


  3.创建包含单一元素的元组


  正如上述代码示例,我们使用一对括号来创建元组对象。通常,一个元组对象包含两个或多个元素,我们使用逗号来分隔这些元素。


  如果我们想创建一个仅包含一个元素的元组,我们应该怎么做?让我们试试:


  >>>math_score=(95)
  >>>math_score[0]
  Traceback(most recent call last):
  File"<stdin>",line 1,in<module>
  TypeError:'int'object is not subscriptable
  >>>type(math_score)
  <class'int'>


  正如我们看到的一样,(95)并不像我们中的一些人所想的那样创建元组对象。相反,它创建了一个整数。你也许想到了,正确的方法是需要在元素后面加一个逗号:


  >>>math_score=(95,)
  >>>math_score[0]
  95
  >>>type(math_score)
  <class'tuple'>


  4.使用下划线和*来unpack元组


  虽然我们可以通过索引来访问元组的每项元素,但更常见的收单是使用unpack技术,例如:


  response=(404,"Can't access website")
  response_code,response_data=response

  对于unpack技术,我们定义了许多变量,这些变量的数量与元组的长度相匹配。即元组的每个元素都被分配给相应的变量。


  如果我们不需要使用所有创建的变量,此时建议使用下划线来表示这些未被使用的变量。例如针对上述例子,我们可能只对使用变量response_data,而不使用response_data,此时我们可以执行以下操作:

  _,response_data=response


  这样,我们就告诉代码的读者,此时我们只对访问tuple对象的第二个元素感兴趣。


  当一个元组对象中有多个元素时,如果我们希望可以访问多个连续的元素,此时我们可以使用星号表达式:


  scores=(98,95,95,92,91)
  algebra,*others,zoology=scores
  assert others==[95,95,92]


  如上所示,我们有一个元组对象,它按字母顺序保存了各项课程的分数,我们知道第一门课程是代数,最后一门是动物学。在上面的例子中,我们通过星号进行unpack操作得到了在中间的三个分数。


  5.使用命名元组


  我们可以使用索引或unpack操作来访问元组的各个元素,以将这些元素分配给多带带的变量。有时,这样做可能会很丑陋。


  请参见以下示例:


  location1=(27.2,7.5)
  location2=(30.1,8.4)
  location3=(29.9,7.7)
  latitude1=location1[0]
  longitude2=location2[1]
  latitude3,longitude3=location3


  上述代码中,我们有三个location变量,显示了各自的位置坐标。当我们访问这些坐标的单个元素时,代码看起来不那么简洁。


  虽然我们可以使用自定义类来实现坐标的数据类型,但对于这个简单的数据类型,自定义类可能显得有些臃肿。相反,我们可以使用命名元组来作为轻量级数据类型,如下:


  from collections import namedtuple
  Location=namedtuple("Location",
  ["latitude","longitude"])
  location1=Location(27.2,7.5)
  location2=Location(30.1,8.4)
  location3=Location(29.9,7.7)
  latitude1=location1.latitude
  longitude2=location2.longitude
  location3.latitude,location3.longitude


  如上所示,我们调用namedtuple通过指定类名及其属性来创建命名元组类。现在,我们可以通过调用类的构造函数来创建命名元组类的实例。对于这些实例,我们可以使用点符号来访问其属性,这是常规元组对象无法使用的特性。


  6.总结


  在本文中,我们回顾了Python中元组的三个特性。使用这些特性,可以极大地提升我们代码的可读性和可理解性,希望大家可以将其多多应用于日常工作中。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128365.html

相关文章

  • Python爬虫入门

    摘要:什么是爬虫一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息四种基本数据结构列表列表中的每个元素都是可变的列表的元素都是有序的,也就是说每个元素都有对应的位置列表可以容纳所有的对象波波超哥小明波波超哥小明如果为切片返回的也是列 什么是爬虫? 一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息 Python四种基本数据结构 列表 **列表中的每个元素都是可变的...

    xbynet 评论0 收藏0
  • 数字图像处理:OpenCV-Python中的直方图均衡知识介绍及函数equalizeHist详解

    摘要:对于图像整体比较暗的情况,直方图均衡能得到类似的效果。这些内容老猿在数字图像处理直方图均衡算法研究及模拟实现中进行介绍,本部分主要详细介绍提供的直方图均衡函数。更多图像直方图处理的内容请参考数字图像处理第三章学习总结感悟直方图处理的介绍。 ...

    ityouknow 评论0 收藏0
  • python_bomb----元组(tuple)

    摘要:元组的创建元组是带了约束的列表,仍可以存放任意数据类型默认元组内容是不可改变的,但当元组内包含可变数据类型时,可以间接修改元组如果元组内只有一个元素,其后要加逗号,否则数据类型不确定元组的常用方法元组的特性索引切片重复连接只能增加元组成 元组(tuple)的创建 元组是带了约束的列表,仍可以存放任意数据类型 >>> sheen =(1,3,True,3.4,[1,4],(1,5)) >...

    layman 评论0 收藏0
  • Python 进阶之路 (三) Tuple元组使用指南

    摘要:返回元组中元素最大值。将列表转换为元组。如果相对元组排序,通常先得将它转换为列表并使其成为一个可变对象,才能获得使用排序方法,或使用内置方法。 比List更安全的数据类型 大家好,今天为大家介绍一种更为安全的Python内置数据类型:tuple(元组),以及它的基础用法 元组是什么 元组(tuple)是另一种有序的数据类型,与list比较类似。主要不同的一点是tuple被创建后就不能对...

    1fe1se 评论0 收藏0
  • SQL Server操作语句

    摘要:分组的目的是为了细化聚合函数的作用对象。使用子句时,如果在的查询列表中包含聚合函数,则是针对每个组计算出来的一个汇总的值,从而实现对查询结果的分组统计。外连接操作中可以使用子句,子句等 数据查询功能: Select from [where] [Group by ] [having ] [order by ] 学生表(student) showImg(https://segment...

    ZweiZhao 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<