资讯专栏INFORMATION COLUMN

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

89542767 / 57人阅读

  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四种基本数据结构 列表 **列表中的每个元素都是可变的;列表的元素都是有序的,也就是说每个元素都有对应的位置;列表可以容纳所有的对象;** list = ["波波", "90", "超哥...

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

    ...》进行了详细分析。 四、OpenCV直方图均衡函数equalizeHist详解 4.1、概述 上面第三部分介绍的直方图均衡处理的算法及案例,是OpenCV官方提供的基于Numpy实现的直方图均衡处理的样例。该样例是为了说明OpenCV的直方图均衡算法,实...

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

    元组(tuple)的创建 元组是带了约束的列表,仍可以存放任意数据类型 >>> sheen =(1,"3",True,3.4,[1,4],(1,5)) >>> print(type(sheen)) 默认元组内容是可改变的,但当元组内包含可变数据类型时,可以间接修改元组 >>> star =([1,4,65],"hello") ...

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

    ...全的数据类型 大家好,今天为大家介绍一种更为安全的Python内置数据类型:tuple(元组),以及它的基础用法 元组是什么 元组(tuple)是另一种有序的数据类型,与list比较类似。主要同的一点是tuple被创建后就能对其进行修改...

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

    ... Sdept ASC,Sage DESC 13.使用聚合函数汇总数据 count(*):统计表中元组的个数。 count([distinct]):统计本列非空列值个数,distinct表示包括列的重复值。 sum():计算列值总和(必须是数值类型) avg():计算列值平均值(必须是数值...

    ZweiZhao 评论0 收藏0

发表评论

0条评论

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