zoukankan      html  css  js  c++  java
  • Python-内置数据结构之元组(tuple)

    一、元组--tuple

      1、元组格式:(1,2) 、(1,2,'s'), (1,) ----一个元素的时候,要补一个逗号

      2、元组的特点:

          有序的元素组成的集合

          一旦定义,就不可被修改(增,删,改),只能查看

      3、元组的定义 初始化

          定义:和list一样

            tuple()  or   tuple(iterable)  or  t = ()  (前两者是工厂方法)

    1 t = tuple(range(1,7,2))
    2 print(t)
    3 t1 = t * 3 
    4 print(t,t1)  # (1, 3, 5) (1, 3, 5, 1, 3, 5, 1, 3, 5)

      4、对元组的操作:

        除了列表的增,删,改,都可以用,一样的效果,索引等   

      5、命名元组namedtuple:(帮助文档中,有使用例子)

        namedtuple(typename,field_names,verbose=False,rename=False)

          命名元组,返回一个元组的子类,并定义了字段

          field_names 可以是空白符或逗号分隔符的字段的字符串,可以是字段的列表

     1 from collections import namedtuple
     2 Point = namedtuple('_point',['x','y']) # '_point' 是类型名,['x','y']:是字段
     3 p = Point(11,22) # p是一个对象(类似对象,Point类产生一个又一个的对象)
     4 print(p.x) # 11
     5 print(p.y)  # 22
     6 print(p) # _point(x=11, y=22)
     7 
     8 Student = namedtuple('Student','name age') # Point = namedtuple('_point',('x','y'))
     9 tom1 = Student('tom',20)
    10 tom1.name # 'tome'
    11 tom1.age #  20
    12 print(tom1) # Student(name='tom', age=20)

      namedtuple的部分原码:  

    1 if isinstance(field_names, str):
    2         field_names = field_names.replace(',', ' ').split()
    3     field_names = list(map(str, field_names))
    4     typename = _sys.intern(str(typename))
    #

      注:

        1写程序,注意的是空间复杂度 和 时间复杂度,所以该少用就得少用,否则效率很低

        2、list:最好不要挪动,找某个元素,替换或者尾部操作是可以的

        3、max(1)  X    max([1])  v       max((2,))   V

        4、初始化一个列表 比 初始化一个元组慢

        5、所谓的不能改不是绝对的!!!!

    1 tu = (11, 22, 33, [9, 3], 44,)
    2 tu[3][1] = 1
    3 print(tu) # (11, 22, 33, [9, 1], 44)

      扩展:

        map():map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。map后面的参数是一个可迭代对象,执行map时,相当于执行一个for循环.

        字符串的 split():v = test.split('s',2) # 以s分隔,分隔两次,不保留分隔符,以列表形式返回            

    1 s = ',abds sda, '
    2 l = s.split(',',2)
    3 print(l) # ['', 'abds sda', ' ']

        

    为什么要坚持,想一想当初!
  • 相关阅读:
    Linux篇---ftp服务器的搭建
    【Spark篇】---SparkStreaming+Kafka的两种模式receiver模式和Direct模式
    【Spark篇】---Spark故障解决(troubleshooting)
    【Spark篇】---Spark解决数据倾斜问题
    【Spark篇】---Spark调优之代码调优,数据本地化调优,内存调优,SparkShuffle调优,Executor的堆外内存调优
    【Redis篇】Redis持久化方式AOF和RDB
    【Redis篇】Redis集群安装与初始
    【Redis篇】初始Redis与Redis安装
    Git提示“warning: LF will be replaced by CRLF”
    Git 忽略特殊文件
  • 原文地址:https://www.cnblogs.com/JerryZao/p/9432949.html
Copyright © 2011-2022 走看看