• 元组的基础使用


    元组——tuple

    列表非常适合用于存储在程序运行期间可能变化的数据集。

    列表是可以修改的,但元组是不可修改的

    Python将不能修改的值称为不可变的,而不可变的列表被称为元组

    1. 元组的创建和删除

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

      语法:

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

      ​ 在Python中,元组使用一对小括号将所有的元素括起来,但是小括号不是必须的,只要将一组值用逗号分隔开,Python就可以使其为元组。

       verse = "渔舟唱晚", "高山流水", "出水莲", "汉宫秋月"	# 元组
      

      ​ 如果要创建的元组中只有一个元素,需要在元素的后面加上逗号,否则Python使其为字符串

      verse1 = ('一片冰心在玉壶')	# 字符串
      verse2 = ('一片冰心在玉壶',)	# 元组
      
    2. 创建空的元组

      emptytuple = ()
      
    3. 创建数值元组

      可以使用tuple()函数直接将range()函数循环出来的结果转换为数值元组

      tuple(data)

      data-可迭代的对象

    4. 删除元组

      del tuplename

    del语句在实际开发中,并不常用,因为Python自带的垃圾回收机制会自动销毁不用的元组,所以即使我们不手动将其删除,Python也会自动将其回收。

    2. 访问元组元素

    1. 通过for循环

      coffee_name = ('蓝山', '卡布奇诺', '曼特宁', '摩卡', '麝香猫', '哥伦比亚')
      print('您好,欢迎光临 ~ 伊米咖啡馆 ~
      我店有:')
      for name in coffee_name:
          print(name, "咖啡", end=' ')
      '''
      result:
      您好,欢迎光临 ~ 伊米咖啡馆 ~
      我店有:
      蓝山 咖啡 卡布奇诺 咖啡 曼特宁 咖啡 摩卡 咖啡 麝香猫 咖啡 哥伦比亚 咖啡 
      '''
      
      
    2. for + enumerate()

      enumerate():——枚举

      该函数用于将一个可遍历的数据对象(如列表、元组)组合为一个索引序列,同时列出数据和数据下标,一般在for循环中使用。

      team = ('火箭', '勇士', '开拓者', '雷霆', '爵士', '马刺')
      for index, item in enumerate(team):
          if index % 2 == 0:
              print(item + '		', end='')
          else:
              print(item)    
      '''
      result:
      火箭		勇士
      开拓者		雷霆
      爵士		马刺
      '''
      

    3. 修改元组的元素

    ​ 元组是不可变序列,所以我们不能对它的单个元素值进行修改。通过对元组进行重新赋值进行修改。

    ​ 元组和元组是可以进行连接的,但连接的两者必须都是元组才行,否则是错误的,要连接的元组只有一个元素时,一定不要忘记后面的逗号。

    4. 元组推导式

    >>> import random
    >>> random_number = (random.randint(10,100) for i in range(10))
    >>> random_number
    <generator object <genexpr> at 0x0000021A177BDED0>	# 生成器对象
    >>> tuple(random_number)			# 转换成元组
    (28, 63, 34, 98, 96, 36, 87, 35, 25, 44)
    

    ​ 从上面的执行结果可以看出,使用元组推导式生成的结果并不是一个元组或列表,而是一个生成器对象,这一点和列表推导式不同。

    ​ 要将该生成器对象转换成元组,使用tuple()方法,转换成列表,使用list()方法。

    示例一:

    # 通过__next()__方法遍历
    # 在Python2.x中__next()__方法对应的是next()方法,也是用于遍历生成器对象的。
    >>> number = (i for i in range(3))
    >>> number
    <generator object <genexpr> at 0x0000021A1781EA20>
    >>> number.__next__()
    0
    >>> number.__next__()
    1
    >>> number.__next__()
    2
    >>> number.__next__()
    Traceback (most recent call last):
      File "<pyshell#11>", line 1, in <module>
        number.__next__()
    StopIteration		# 停止迭代
    

    示例二:

    # 通过for循环遍历
    >>> number = (i for i in range(4))
    >>> number
    <generator object <genexpr> at 0x0000021A1781EA98>
    >>> for i in number:
    	print(i, end='')
        
    0123
    >>> print(tuple(number))
    ()
    

    从上面的两个示例中可以看出:无论通过那种方法遍历,如果想要再次使用该生成器对象,必须重新创建一个生成器对象,因为遍历后该生成器对象就不存在了。

    5. 元组与列表的区别

    1. 列表可变,元组不可变,除非整体替换。
    2. 列表可以用append()、extend()、insert()、remove()、pop()实现添加和删除功能,而元组没有这几个方法。
    3. 列表支持通过切边进行修改和访问,而元组只支持访问,不支持修改,再不进行任何修改时,建议使用元组。
    4. 元组比列表的访问和处理速度快。
    5. 列表不能作为字典的键,而元组可以。
  • 相关阅读:
    洛谷 1443——马的遍历(广度优先搜索)
    jzoj C组 2017.1.21
    jzoj C组 2017.1.20 比赛
    jzoj C组 2017.1.19 比赛
    jzoj C组 2017.1.18 比赛
    jzoj C组 2017.1.17 比赛
    jzoj C组 2017.1.16 比赛
    jzoj C组 2017.1.15比赛
    [LCA][数学]JZOJ 4794 富爷说是一棵树
    [CDQ分治][带权并查集]JZOJ 4769
  • 原文地址:https://www.cnblogs.com/rainszj/p/11249494.html
Copyright © 2020-2023  润新知