• Python 学习笔记(九)Python元组和字典(一)


    Python 元组

    元组的定义  元组(tuple)是一种Python对象类型,元组也是一种序列

    Python中的元组与列表类似,不同之处元组的元素不能修改

    元组使用小括号,列表使用方括号

    元组的创建,即在括号中添加元素,并使用逗号隔开

    1 >>> a = 123,"aaa",["python","pass"]
    2 >>> a
    3 (123, 'aaa', ['python', 'pass'])
    4 >>> type(a)
    5 <type 'tuple'>
    6 >>> print "I love %s,and I am a %s"%("Python","programmer")
    7 I love Python,and I am a programmer

     元组是一种序列,序列的基本操作 len() 、+、*、in、max()、min()、cmp()

     元组与序列之间的转换

     元组是不可修改的

     1 >>> a =(1,2,3)
     2 >>> id(a)   #a与b两个元组进行对比,是两个不同的对象
     3 44307080L
     4 >>> b=(1,3,2)
     5 >>> id(b)
     6 48683696L
     7 >>> a
     8 (1, 2, 3)
     9 >>> len(a) #计算长度
    10 3
    11 >>> b
    12 (1, 3, 2)
    13 >>> a + b  #将两个元组连接在一起
    14 (1, 2, 3, 1, 3, 2)
    15 >>> a * 3  #将a元组重复3次
    16 (1, 2, 3, 1, 2, 3, 1, 2, 3)
    17 >>> 3 in a  #判断3这个元素是否在a这个元组中
    18 True
    19 >>> 4 in a  #判断4这个元素是否在a这个元组中
    20 False
    21 >>> max(a)  #计算元组a中的最大值
    22 3
    23 >>> min(a)  #计算元组a中的最小值
    24 1
    25 >>> cmp(a,b) #比较元组a、b的大小
    26 -1
    27 >>> alst =list(a) #将元组转换为列表
    28 >>> alst
    29 [1, 2, 3]
    30 >>> c =tuple(alst) #将列表转换为元组
    31 >>> c
    32 (1, 2, 3)
    33 >>> a
    34 (1, 2, 3)
    35 >>> a.append(4) #向元组中追加元素,元组不可追加元素
    36 Traceback (most recent call last):
    37   File "<stdin>", line 1, in <module>
    38 AttributeError: 'tuple' object has no attribute 'append' #元组没有属性append
    39 >>> dir(tuple) #dir 查看元组,仅有count index
    40 ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
    41 >>> dir(list)
    42 ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

    元组的索引和切片,与列表和字符串类似

    元组中只包含一个元素时,需要在元素后面添加逗号

     1 >>> a
     2 (1, 2, 3)
     3 >>> a[0]  #通过索引值取出元素
     4 1
     5 >>> a[1]
     6 2
     7 >>> a[2]
     8 3
     9 >>> a[1:] #通过切片方式取出元素
    10 (2, 3)
    11 >>> a[0:2]
    12 (1, 2)
    13 >>> a[::-1] #将元组a反转
    14 (3, 2, 1)
    15 >>> alst[1]=100  #向alst列表中增加元素 alst[1]
    16 >>> alst
    17 [1, 100, 3]
    18 >>> a[1]=100  #元组中不能通过此方式添加元素
    19 Traceback (most recent call last):
    20   File "<stdin>", line 1, in <module>
    21 TypeError: 'tuple' object does not support item assignment  元组不支持修改
    22 >>> temp =list(a)    #将元组a转换成列表存于temp临时变量中
    23 >>> temp[1]=100    #将100添加到列表temp索引位置为1的地方
    24 >>> a =tuple(temp)  #再将temp转为元组
    25 >>> a          #实现元组与列表之间的互转
    26 (1, 100, 3)
    27 >>> [1]      #单独的[1]是一个列表
    28 [1]
    29 >>> type([1])
    30 <type 'list'>
    31 >>> type((1))   #单独(1)是一个整型
    32 <type 'int'>
    33 >>> type((1,))  #单独(1,)是一个元组, 元组中只包含一个元素时,需要在元素后面添加逗号
    34 <type 'tuple'>
    35 >>>

    元组的count()和index()

     1 >>> a
     2 (1, 100, 3)
     3 >>> b=a*3
     4 >>> b
     5 (1, 100, 3, 1, 100, 3, 1, 100, 3)
     6 >>> b.count(1) #统计1出现的次数
     7 3
     8 >>> b.index(3) #计算3第一次出现的位置
     9 2

    元组的意义

     元组比列表操作速度快

     对数据“写保护” 因为元组不可修改

     可用于字符串格式化中

     可作为字典的key

  • 相关阅读:
    WPF 中 UserControl作为另一个Process宿主到Window里, ErrorTemplate的默认红框没有出现
    WPF error: does not contain a static 'Main' method suitable for an entry point
    C#编译问题'System.Collections.Generic.IEnumerable' does not contain a definition for 'Where' and no extension method 'Where' accepting a first argument
    C# 序列化反序列化XML的帮助类
    利用反射拿到并递归C#类中的各个字段名字及类型
    XmlSerialize error: There was an error generating the XML document.
    No overload for 'OnStartup' matches delegate 'System.Windows.StartupEventHandler'
    Linq 支持动态字查询集合, 也就是说根据传入的值进行查询。
    JsonCpp的使用
    win32 UNICODE 支持
  • 原文地址:https://www.cnblogs.com/wangruihua-521/p/8550939.html
Copyright © 2020-2023  润新知