zoukankan      html  css  js  c++  java
  • python 3 基础之元组tuple,详解

    元组

    元组不可改变,只要定义完成,就已经决定数值,即不可再改变,一般用来保存一些不会改变的数据;与列表类似,列表用中括号而元组用小括号,元组不可改变而列表可以。

    tuple和list非常类似,但是tuple一旦初始化就不能修改

    1、定义一个元组

    1 my_tuple = (32,'djsh',32)
    2 print(my_tuple)

      1.1、定义空元组   

    1 my_tuple = ()
    2 # 或者
    3 my_tuple = tuple()

      1.2、定义只有一个元素的元组

    1 my_tuple = (23,)
    2 # 或者
    3 my_tuple = ('dsiud',)

    2、通过下标索引来获取元组里的元素

    1 my_tuple = (1,3.14,'关羽','张飞','小明')
    2 # 获取小明
    3 values = my_tuple[4]
    4 print(values)

    3、修改元组(元组不可修改,可以将两个元组连接成一个)

    my_tuple1 = (23,323,2344)
    my_tuple2 = ('dsl','dsxcii2')
    # 实则是利用运算符
    tup3 = my_tuple1 + my_tuple2
    print(tup3)

    4、删除元组(元组不能单独删除某个元素,可以利用内置函数del() 删除整个元组)

    1 # 定义一个元组
    2 my_tuple = (32,'233dssd',232)
    3 #  利用内置函数del删除元组my_tuple
    4 del my_tuple
    5 print(my_tuple)
    # 最后报错就对了,因为已经删除掉了my_tuple,打印不出来

    5、获取元组的下标索引和查看某个元素出现的次数

    1 my_tuple = (1,32,3.14,'关于','关羽','小明','关羽')
    2 # 获取某个元素的下标索引
    3 index = my_tuple.index(3.14)
    4 print(index)
    5 # 获取某个元素出现的次数
    6 count = my_tuple.count('关羽')
    7 print(count)

    6、for循环与while循环遍历元组

     1 my_tuple = (1,32,3.14,'关于','关羽','小明','关羽')
     2 # for循环遍历
     3 for i in my_tuple:
     4     print(i)
     5 # while遍历
     6 i = 0
     7 # 内置函数len()统计元组中元素的个数
     8 while i < len(my_tuple):
     9     print(my_tuple[i])
    10     i += 1

    7、另一种解读

      7.1、任意无符号的对象,以逗号隔开,默认为元组

    my_tup = 23,23,3,'dsdkjh'
    print(type(my_tup))
    # 结果:
    # 类型为tuple
    <class 'tuple'>

      7.2、tuple和list非常类似,但是tuple一旦初始化就不能修改,如:

    my_tuple = (6366,'dsf','张飞')

      元组my_tuple 现在不能再改变了,没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,可以正常地使用my_tuple[0],my_tuple[-1],但不能赋值成另外的元素。

      不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

      7.3、tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来

    my_tuple = (3, 3, 4)
    print(my_tuple)
    # 打印结果
    (3, 3, 4)
    # 定义空元组
    tuple = ()
    print(tuple)

      7.4、定义一个元素的元组

     1 # 定义有且只有一个数字元素的元组
     2 # 错误方式
     3 tuple1 = (1)
     4 print(tuple)
     5 # 打印结果
     6 1
     7 
     8 # 正确的定义方式,如下
     9 my_tuple = (2,)
    10 print(my_tuple)
    11 # 打印结果
    12 (2,)

      上面错误的方式定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。
      所以,只有1个元素的tuple定义时必须加一个逗号,来消除歧义

      7.5、看来是可变的元组

    1 my_tuple = (3,23,'',[3,'ABX'])
    2 my_tuple[3][0] = 'HH'
    3 print(my_tuple)

      这个元组定义的是4个元素的元组,两个数字,一个字符串,一个列表

      表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。

      解释理解:tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'梦',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
      理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。

    8、元组内置函数
      Python元组包含了以下内置函数
      1、cmp(tuple1, tuple2):比较两个元组元素。
      2、len(tuple):计算元组元素个数。
      3、max(tuple):返回元组中元素最大值。
      4、min(tuple):返回元组中元素最小值。
      5、tuple(seq):将列表转换为元组。

    参考:https://www.cnblogs.com/still-smile/p/11586452.html

  • 相关阅读:
    jquery图片播放弹出插件Fancybox
    D3js-API介绍【英】
    ZOJ 3156 Taxi (二分匹配+二分查找)
    linux权限之su和sudo的差别
    CareerCup之1.6 Rotate Image
    [oracle]pl/sql --分页过程demo
    已迁移到http://www.coffin5257.com
    C# 之 集合ArrayList
    Java 序列化Serializable具体解释(附具体样例)
    Android 短信验证码控件
  • 原文地址:https://www.cnblogs.com/will-wu/p/13234607.html
Copyright © 2011-2022 走看看