zoukankan      html  css  js  c++  java
  • Python tuple元组详解

    元组是 Python 中另一个重要的序列结构,和列表类似,也是由一系列按特定顺序排序的元素组成。和列表不同的是,列表可以任意操作元素,是可变序列;而元组是不可变序列,即元组中的元素不可以单独修改。

    元组可以看做是不可变的列表。通常情况下,元组用于保存不可修改的内容。

     从形式上看,元组的所有元素都放在一对小括号“()”中,相邻元素之间用逗号“,”分隔,如下所示:

    (element1, element2, ... , elementn)

    从存储内容上看,元组可以存储整数、实数、字符串、列表、元组等任何类型的数据,并且在同一个元组中,元素的类型可以不同,在这个元组中,有多种类型的数据,包括整形、字符串、列表、元组。例如:

    ("test.com.cn",1,[2,'a'],("abc",3.0))

     需要额外注意的一点是,当创建的元组中只有一个元素时,此元组后面必须要加一个逗号“,”,否则 Python 解释器会将其误认为字符串。

    [root@kube tuple]# cat demo1.py 
    #coding:utf-8
    a_tuple =  (1,'a',[2,3],'test')    #tuple 元组用小括号 () 括起来。里面包括数字,字符,列表
    print(type(a_tuple))     
    b_tuple = ('a',)                   #如果元组就一个元素,那么需要末尾用 ,逗号结束,否则会认为是字符串。
    print(type(b_tuple))
    c_tuple = ('c')
    print(type(c_tuple))
    a_list = [1,[2,"hi",4.3],'qaq']
    d_tuple = tuple(a_list)             #使用 tuple() 函数可以将列表转换为元组
    print(type(d_tuple))
    print(d_tuple[:2])                  #可以用分片的方式获取元组数据    
    [root@kube tuple]
    # py demo1.py <class 'tuple'> <class 'tuple'> <class 'str'> <class 'tuple'> (1, [2, 'hi', 4.3]) [root@kube tuple]#

    python 修改,删除元组元素

    元组是不可变序列,元组中的元素不可以单独进行修改。但是,元组也不是完全不能修改

    [root@kube tuple]# cat demo2.py 
    #coding:utf-8
    
    a_tuple = (1,'test',[2,3])
    print(a_tuple)
    a_tuple = ("one",'test')                #元组数据可以重新赋值
    print(a_tuple)
    a_tuple = a_tuple + (1,'we')            #通过+ 号对元组数据进行拼接
    print(a_tuple)
    del a_tuple                             #del 删除元组数据
    print(a_tuple)
    
    
    [root@kube tuple]# py demo2.py 
    (1, 'test', [2, 3])
    ('one', 'test')
    ('one', 'test', 1, 'we')
    Traceback (most recent call last):
      File "demo2.py", line 10, in <module>
        print(a_tuple)
    NameError: name 'a_tuple' is not defined
    [root@kube tuple]# 

    python 元组和列表的区别

    组和列表最大的区别就是,列表中的元素可以进行任意修改,就好比是用铅笔在纸上写的字,写错了还可以擦除重写;而元组中的元素无法修改,除非将元组整体替换掉,就好比是用圆珠笔写的字,写了就擦不掉了,除非换一张纸。

    可以理解为,tuple 元组是一个只读版本的 list 列表。

    [root@kube tuple]# cat demo3.py 
    listdemo = []
    tupledemo = ()
    
    print(listdemo.__sizeof__())
    print(tupledemo.__sizeof__())
    [root@kube tuple]# py demo3.py 
    40
    24
    [root@kube tuple]#
    #事实上,就是由于列表是动态的,它需要存储指针来指向对应的元素(占用 8 个字节)。另外,由于列表中元素可变,所以需要额外存储已经分配的长度大小(占用 8 个字节)。但是对于元组,情况就不同了,元组长度大小固定,且存储元素不可变,所以存储空间也是固定的。

    当然,如果你想要增加、删减或者改变元素,那么列表显然更优。因为对于元组来说,必须得通过新建一个元组来完成。

    总的来说,元组确实没有列表那么多功能,但是元组依旧是很重要的序列类型之一,元组的不可替代性体现在以下这些场景中:

    1. 元组作为很多内置函数和序列类型方法的返回值存在,也就是说,在使用某些函数或者方法时,它的返回值会元组类型,因此你必须对元组进行处理。
    2. 元组比列表的访问和处理速度更快,因此,当需要对指定元素进行访问,且不涉及修改元素的操作时,建议使用元组。
    3. 元组可以在映射(和集合的成员)中当做“键”使用,而列表不行。
  • 相关阅读:
    javascript 压缩空格代码演示
    javascript 正则表达式代码
    数据筛选和排序
    实现win的on程序数据更新
    使用listview控件展示数据
    初始windows程序
    构建布局良好的windows程序
    ADO.NET访问数据库
    模糊查询
    基本查询
  • 原文地址:https://www.cnblogs.com/zy09/p/11590227.html
Copyright © 2011-2022 走看看