• python学习笔记(7)容器以及容器的访问使用


    一、容器

       1.list列表

         序列是python中最基本的数据结构,序列中的每个元素都分配一个数字,它的位置或索引,第一个索引是0,第二个索引是1,以此类推

        

    Built-in mutable sequence.    #以一种可变的序列进行创建

    If no argument is given, the constructor creates a new empty list.  
      #如果没有参数来提供,构造器会创建一个新的空的列表
    The argument must be an iterable if specified.
      #如果指定参数,那么这个参数必须是可以迭代的量

         类表的数据项不需要具有相同的数据类型

           list创建

           添加元素(list only):append,extends

          删除元素(list only) :del,drop

         根据索引读写(tuple读写)

        判断容器是否为空

        字符串转换

        容器元素数量

        遍历

    数组的遍历

    #有一个数组,然后再任意给定一个值,找到数组中的两个数,使得他们的和等于给定的数
    #如果找得到的话,就返回数组数组中这两个数的索引值,如果找不到的话,就返回-1,-1
    def two_sum(numbers,target):
        for i in range(len(numbers)):
            for j in range(i+1,len(numbers)):
                if (numbers[i]+numbers[j]==target):
                    return i,j
        return -1,-1
    
    print(two_sum([1,5,3,9,1,0,3,4,6],10))

      2.元组(只读列表)

    #元组
    t=(1,2,3,'456')
    print(type(t))
    t[0]='a'
    元组不支持赋值操作,也没有append()方法

       

    Built-in immutable sequence.      #不可变的序列
        
        If no argument is given, the constructor returns an empty tuple.
        #如果没有参数提供,构造器会返回一个新的空元祖 If iterable is specified the tuple is initialized from iterable's items.   #如果被指定为可以迭代的额,那么这个元组将会从可迭代的元素项进行初始化 If the argument is a tuple, the return value is the same object.
        #如果参数是一个tuple,那么返回的值就是同一个对象

      3.dict字典:字典中的每个键值(key=>value)对使用冒号(:)进行分割,每个键值对之间用逗号,进行分割,整个字典都包括在花括号({})中

    #dict字典,key-value的结构,key和value可以是任意的值
    d={'a':1,'b':2,1:'one',2:'two'}
    print(type(dict))#<class 'type'>
    print(type(d))#<class 'dict'>
    print(d)#{'a': 1, 'b': 2, 1: 'one', 2: 'two'}
    
    
    #访问元素
    print(d['a'])#访问对应的value值
    print(d[1])#访问对应的value值
    
    #判断元素是否存在,就是判断key是否存在,一个key对应一个value,如果要一个key对应多个值,key值就用数组
    print('a' in d)#判断'a'是不是在key中的
    print(3 in d )
    
    #删除元素
    del(d[2])
    print(d)
    
    #查看字典的长度
    print(len(d))
    
    #遍历字典的key
    for key in d:
        print(d[key])
    print('.........')
    #遍历字典中的key,value
    for key,value in d.items():
        print(str(key)+':'+str(value)

      4.set集合:是一个无序不重复的元素集合,基本功能包括关系测试和消除重复元素,集合对象还支持union(联合)操作,difference(差)和sysmmetric(对称差集)等数学运算

      

     """
            set() -> new empty set object   #set()表示一个一个新的空的set(对象)
            set(iterable) -> new set object  #set(iterable)表示一个新的set对象
            
            Build an unordered collection of unique elements.    #创建的是一个无序的无重复元素的集合
            # (copied from class doc)
            """

      5.python数据类型:empty和None之间的区别 

    #向容器中添加元素,空和None是不是一回事
    l_a=[]  #l_a是一个空的列表
    if not l_a:#如果l_a是空
        print('Empty')#not xx和is None不是一回事
    if l_a is None:#如果不是空
        print('None')
    最后结果:Empty
    注意Empty和None不是一回事,即使是empty元素,但是在内存中还要有一些信息来进行相关的描述,至少分配一个类和内存空间来进行相关的计算,而None是都没有的

      6.切片

        (1)存取序列(列表,元组,字符串)的任意一部分

        (2)格式:seq[开始索引:结束索引:步长]

            默认值

            负数索引

            负数步长

    #生成10个元素的数组的方法一
    li=list(range(10))
    print(li)
    #方法二
    li=[]
    for i in range(10):
        li.append(i)
    print(li)
    
    #生成有10个0的数组
    li=[0]*10
    print(li)
    #生成有10个1的数组
    li=[1]*10
    print(li )
    
    #2维数组
    li_2d=[[0]*3]*3
    print(li_2d)
    #修改元素,修改每行的第一个元素
    li_2d[0][0]=100
    print(li_2d)
    
    #深拷贝,修改元素只修改第一个元素
    li_2d=[[0]*3 for i in range(3)]
    li_2d[0][0]=100
    print(li_2d)
    
    
    s={x for x in range(10) if x%2==0}
    print(s)

        7.生成器

          (1)创建一个巨大的列表,但是只需要访问其中的少量的几个元素

          (2)...

          (3)..

          (4)生成生成器:列表推倒时用()替换[]

          (5)遍历:next或者for循环

      8.函数对象:   

        def func(a,b,c):  #返回的是一个函数对象
         print(a,b,c)
        print(type(func))  #返回的是 <class 'function'>
      9.模块
        在python中,模块也有类型
         import string
                    
          print(type(string)) #<class 'module'>
      10.类
    class MyClass(object):
        pass
    print(type(MyClass))   #自己定义类的类型是type类
    
    my_class=MyClass()
    print(type(my_class))   #对于自己实例化的一个类,这个类的类型是就是实例化类的类型   

      11.作业:反转单向链表

  • 相关阅读:
    面试题|Docker的优缺点
    【华为出品】物联网全栈开发实战营来啦!送海思双目开发板
    Nginx实战|Nginx健康检查
    Linux中几个正则表达式的用法
    盘点提高国内访问 Github 的速度的 9 种方案
    一行代码如何隐藏 Linux 进程?
    (二)类加载机制与反射:类加载器
    (一)类加载机制与反射:类的加载,连接和初始化
    (八)多线程:线程相关类
    (七)多线程:线程池
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/9800072.html
Copyright © 2020-2023  润新知