zoukankan      html  css  js  c++  java
  • 10.python内置数据--元组

    1.元组tuple

    • 一个有序的元素组成的集合
    • 使用小括号()表示
    • 元组是不可变对象,所以增、改、删方法都没有

    2.定义

    • 多元素的时候,t = (1,3,6,7,3,7,12)
    • 单元素的时候,t = (1,),要注意元素的后面需要跟一个逗号
     1 >>> t = (1,3,6,7,3,7,12)
     2 >>> t
     3 (1, 3, 6, 7, 3, 7, 12)
     4 >>> type(t)
     5 <class 'tuple'>
     6 >>> t1 = (1)
     7 >>> type(t1)
     8 <class 'int'>
     9 >>> t1 = (1,)
    10 >>> type(t1)
    11 <class 'tuple'>
    12 >>> t1
    13 (1,)
    14 >>> t2 = (1,2,3)*3
    15 >>> t2
    16 (1, 2, 3, 1, 2, 3, 1, 2, 3)
    17 >>>

    3.元组元素的访问:

    • 支持索引(下标)
    • 正索引:从左到右,从0开始,为列表中每一个元素编号
    • 负索引:从右到左,从-1开始
    • 正负索引不可以越界,否则引发异常IndexError
    • 元组通过索引访问
      • tuple[index],index就是索引,使用中括号访问
     1 >>> t = tuple(range(5))
     2 >>> t
     3 (0, 1, 2, 3, 4)
     4 >>> t[1]
     5 1
     6 >>> t[1] = 4
     7 Traceback (most recent call last):
     8   File "<stdin>", line 1, in <module>
     9 TypeError: 'tuple' object does not support item assignment
    10 >>>

    4.查询

    • index(value,[start,[stop]])
      • 通过值value,从指定区间查找列表内的元素是否匹配
      • 匹配第一个就立即返回索引
      • 匹配不到,抛出异常ValueError
    • count(value)
      • 返回列表中匹配value的次数
    • 时间复杂度
      • index和count方法都是O(n)
      • 随着列表数据规模的增大,而效率下降
    • len(tuple)
      • 返回元素的个数

    5.可修改的特殊情况

    • 元组中有例如列表字典之类的元素时,可修改,然而仅仅修改的是可修改元素的内容
     1 >>> t = (1,5,[4,11,6],5,9)
     2 >>> t
     3 (1, 5, [4, 11, 6], 5, 9)
     4 >>> t[0] = 11
     5 Traceback (most recent call last):
     6   File "<stdin>", line 1, in <module>
     7 TypeError: 'tuple' object does not support item assignment
     8 >>> t[2][0] = 8
     9 >>> t
    10 (1, 5, [8, 11, 6], 5, 9)
    11 >>>

    6.命名元组namedtuple

    • 帮助文档中,查阅namedtuple,有使用例程
    • namedtuple(typename, field_names, verbose=False, rename=False)
      • 命名元组,返回一个元组的子类,并定义了字段
      • field_names可以是空格或逗号分割的字段的字符串,可以是字段的列表
      • from collections import namedtuple 导入模块
     1 >>> from collections import namedtuple
     2 # 导入该模块
     3 >>> Point = namedtuple('_Point','x,y')
     4 # Point是类型,_Point是类名称,x与y可以理解成变量实例
     5 >>> type(Point)
     6 <class 'type'>
     7 # 可以看到Point是个类型
     8 >>> p1 = Point(11,22)
     9 >>> p1
    10 _Point(x=11, y=22)
    11 >>> p1.x
    12 11
    13 >>> p1.y
    14 22
    15 >>> Student = namedtuple('Student','name age')
    16 >>> tom = Student('tom',20)
    17 >>> jerry = Student('jerry',18)
    18 >>> tom.name
    19 'tom'
    20 >>> tom.age
    21 20
    22 >>>
  • 相关阅读:
    Oracle数据库管理
    Oracle——范式
    GUID
    java课上知识点整理—语句
    java课上知识点整理—java代码结构、标识符、数据类型、运算符
    使用css实现时间轴
    超简单的轮播实现
    第一个vue示例-高仿微信
    12. thymeleaf中资源相对路径的解决
    11. 将博客部署到tomcat上
  • 原文地址:https://www.cnblogs.com/linfengs/p/11713462.html
Copyright © 2011-2022 走看看