zoukankan      html  css  js  c++  java
  • 我的Python入门笔记(8)

    五章、元组


    Readability counts.——The Zen of Python


      一、元组概述

      元组(tuple)是Python中另一个比较重要的序列结构,它与列表类似,也是由一系列按特定顺序排列的元素组成,但是它是不可变序列。元组因此也被称为不可变列表。在形式上,元组的所有元素都放在一对“()”中,两个相邻的元素间使用逗号“,”分割。在内容上,可以将整数、实数、字符串、列表、元组等任何类型内容放入元组中,并在同一个元组中,元素的类型可以不同。通常情况下,元组用于保存程序中不可修改的内容。从元组的定义和列表的定义上看,这两种结构比较相似,他们之间的主要区别就是元组是不可变序列,即元组中的元素不可以单独修改。列表是可变序列,列表中的元素可以任意修改。

      二、元组的创建和删除

      1.使用赋值运算符创建元组

      同其他类型的Python变量一样,创建元组时,也可以使用赋值运算符“=”直接将一个元组赋值给变量,其语法格式如下:

      tuplename=(element1,element2,element3,...,enement n)

      tuplename: 元组的名称

      element1,element n:元组中的元素,元组中的元素无个数限制。

    1 1 num = (220,284,1210,1184)
    2 2 str1= ('元素1','元素二','雨霓同学')
    3 3 unit = ('python',1210,('人生苦短,我用Python'))
    4 4 print(type(num),type(str1),type(unit))
    5 5 输出:
    6 6 <class 'tuple'> <class 'tuple'> <class 'tuple'>

      在Python中,虽然元组是使用一对小括号将所有的元素括起来,但实际上,小括号并不是必须的,只需要将一组值用逗号分割开来,Python就可以认为他是元组。

    1 In [1]: tuple=1210,1184,'这是测试文字',[220,284]
    2 
    3 In [2]: type(tuple)
    4 Out[2]: tuple

      如果需要创建的元组只包含一个元素,则需要在元素的后面加一个“,”否则将输出一个字符串。示例如下:

    1 num = (220,)
    2 num2 = ('这是什么')
    3 print(type(num),type(num2))
    4 输出:
    5 <class 'tuple'> <class 'str'>

      2.创建空元组

      在Python中,也可以创建空元组,示例如下:

      emptytuple= ( )   emptytuple:空元组的名称

      空元组可以在为函数传递一个空值或者返回空值。例如,定义一个函数必须传递一个元组类型的值,而我们还不想为它传递一组数据,那么就可以创建一个空元组传递给它。

      3.创建数值元组

      在Python中,可以使用tuple()函数直接将range()函数循环出来的结果转换为数值元组。其语法格式如下:

      tuple(data)   data:可以转换为元组的数据,其类型可以是range对象、字符串、元组或者其他可迭代类型的数据,示例如下: 

    1 num = tuple(range(10,20,3))
    2 print(type(num),num)
    3 输出:
    4 <class 'tuple'> (10, 13, 16, 19)

      使用tuple()函数不仅能通过range对象创建元组,还可以通过其他对象创建元组。

      4.删除元组

      对于已经创建的元组,不在使用时,可以使用del语句将其删除,语法格式如下:

      del typlename  tuplename:要删除元组的名称

      del语句在实际开发时,并不常用,因为Python自带的垃圾回收机制会自动销毁不用的元组。

      三、访问元组元素

      在Python中可以使用print()语句直接输出元组的内容,在输出元组时,是包含左右两侧的小括号的,如果不想输出全部元素,也可以通过元组的索引获得指定的元素。在输出单个元素时,不包括小括号,如果是字符串,还不包括左右的引号,此外元组还可以采用切片的方式或者指定的元素。示例如下: 

    1 num = (10,'测试文本',3,'人生苦短,我用Python')
    2 num2 = num[1]
    3 num3= num[:3]
    4 print(type(num2),num2,type(num3),num3)
    5 输出:
    6 <class 'str'> 测试文本 <class 'tuple'> (10, '测试文本', 3)

      四、修改元组元素

      元组时不可变序列,所以不能对它的单个元素进行修改,但是可以对元组进行重新赋值。示例如下:

    1 num = (10,'测试文本',3,'人生苦短,我用Python')
    2 num = (103,'人生苦短,我用Python')
    3 print(num)
    4 输出:
    5 (103, '人生苦短,我用Python')

      此外,还可以对元组进行连接组合,示例如下:

    1 num = (10,'测试文本',3,'人生苦短,我用Python')
    2 print('初始元祖:',num)
    3 num2 =num+ ('雨霓同学是个沙雕',)
    4 print('组合元组:',num2)
    5 输出:
    6 初始元祖: (10, '测试文本', 3, '人生苦短,我用Python')
    7 组合元组: (10, '测试文本', 3, '人生苦短,我用Python', '雨霓同学是个沙雕')

      在进行元组连接时,连接的内容必须都是元组,不能将元组和字符串或者列表进行连接,此外连接的元组只有一个元素时,一定不能忘记后面的元素,否则会报错

      五、元组推导式

      使用元组推导式可以快速生成一个元组,它的表现形式类似于列表推导式,只是将列表推导式中的中括号“[]”改为小括号“()”。例如生成一个包含10个随机数的元组,示例如下:

    1 import random   #导入random标准库
    2 randomnum = (random.randint(10,100) for i in range(10)) 
    3 randomnum2=tuple(randomnum)
    4 print("生成的元组为:",randomnum)  #转换为元组
    5 print("转换后的元组:",randomnum2)
    6 输出:
    7 生成的元组为: <generator object <genexpr> at 0x000002051973E228>
    8 转换后的元组: (48, 92, 91, 67, 56, 17, 66, 74, 82, 37)

      使用元组推导式生成的结果并不是一个元组或者列表,而是一个生成器对象,这和列表推导式是不同的,需要使用该生成器对象可以将其转换为元组或者列表,转换为列表使用tuple()函数,转换为列表使用list()函数.

      六、元组和列表的区别

      元组和列表都属于序列,而且他们可以按照特定的顺序存放一组元素,类型都不受限制,他们之间的区别主要体现在以下几点:

      1.列表属于可变序列,它的元素可以随时修改或者删除;而元组属于不可变序列,其中元素不可以修改,除非整体替换。

      2.列表可以使用append()、extend()、insert()、remove()和pop()等方法实现添加和修改列表元素,而列表没有这些方法,因为不能向元组中添加和修改元素,同样也不能删除列表元素。

      3.列表可以使用切片访问和修改列表中的元素;元组虽也支持切片,但是它只支持通过切片访问列表元素,不能进行修改。

      4.元组比列表的访问和处理速度快,所以如果只需要对其中的元素进行访问,而不进行修改,建议使用元组。

      5.列表不能作为字典的键,而元组可以.

  • 相关阅读:
    memcached全面剖析
    Zabbix中文使用手册
    lombok
    guava cache
    linux 文件检索操作
    mysql慢查询
    碎片脚本注解(后续整理)
    Docker 目录挂载详述
    jenkins 添加 sonraqube java&vue项目记录
    Ansible unarchive模块
  • 原文地址:https://www.cnblogs.com/1210x1184/p/11074470.html
Copyright © 2011-2022 走看看