• python容器


    数据类型:
       Python七种标准数据类型:
       -----------------+------------------------------------------------
                         |    Number        (数字,包含True、False)
                不        +------------------------------------------------
                可        |    String        (字符串)
                变        +------------------------------------------------
                类        |    Tuple        (元组)
                型        +------------------------------------------------
                        |    None        (真空)
       -----------------+------------------------------------------------
                可        |    List        (列表)
                变        +------------------------------------------------
                类        |    Set            (集合)
                型        +------------------------------------------------
                        |    Dictionary    (字典)
       -----------------+------------------------------------------------
    列表(list)

    定义用"[]":有序、重复列表是可变对象。如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素,以此类推,可以获取倒数第2个、倒数第3个。

    若L=[...] print(L)

    #整个列表 print(*L)

    #用"*"拆出列表所有元素

    组合类型函数,list(),tuple(),dict(),set(),frozenset()只能传入一个参数。 list适合当做[堆栈],queue.Queue作为[单向队列],collections.deque作为[双向队列]。

    13、列表对象方法:

    • 1)append(self, p_object):在原有列表最后位置上追加新元素到列表,不生成新的列表。
    • 2)clear(self):清空列表里面的元素,不生成新列表。
    • 3)copy(self):复制一份列表,相当于一次浅拷贝。
    • 5)extend(self, iterable):把iterable中的每个元素扩展成列表的元素,iterable可以是字符串、列表、集合、元组、字典。
    • 6)index(self, value, start=None, stop=None):查找列表中value元素索引位置,start与stop参数是查找起始与结束位置,默认为None。
    • 7)insert(self, index, p_object):在列表index索引位置插入元素p_object,当index大于列表包含的元素个数时,在最后位置插入元素。
    • 8)pop(self, index=None):从列表中取出index位置的值,index默认为None,此时弹除并返回列表中最后一个值。
    • 9)remove(self, value):移除列表中第一个出现的value元素,value元素不存在列表中时,则抛出ValueError。
    • 10)reverse(self):反转列表元素的位置。
    • 11)sort(self, key=None, reverse=False):给列表中的元素排序,改变原列表!reverse默认False(升序)。【而sorted()函数是生成副本】。
    • 12)[start:stop:step]:切片,从列表中取出一部分元素生成一个新列表,start与stop默认为None,step表示步长值,默认是一个接着一个切取, 如果为2,则表示进行隔一取一操作。步长值为正时表示从左向右取,如果为负,则表示从右向左取。步长值不能为0。
    • 13)索引[index]:获取索引位置index的值。

    列表list合并的4种方法

    
    

    方法1: 直接使用"+"号合并列表

    
    
    aList = [1,2,3]
    bList = ['www', 'pythontab.com']
    cList = aList + bList
    dList = bList + aList
    print(cList)
    print(dList)
    # 结果:
    [1, 2, 3, 'www', 'pythontab.com']
    ['www', 'pythontab.com', 1, 2, 3]
    
    

    方法2: 使用extend方法

    
    
    aList = [1,2,3]
    bList = ['www', 'pythontab.com']
    aList.extend(bList)
    print(aList)
    # 结果:
    [1, 2, 3, 'www', 'pythontab.com']

    方法3: 使用切片

    
    
    aList = [1,2,3]
    bList = ['www', 'pythontab.com']
    aList[len(aList):len(aList)] = bList  # len(aList):len(aList) 为插入位置
    print(aList)
    # 结果:
    [1, 2, 3, 'www', 'pythontab.com']
    aList = [1,2,3]
    bList = ['www', 'pythontab.com']
    aList[1:1] = bList
    print(aList)
    # 结果:
    [1, 'www', 'pythontab.com', 2, 3]

    方法4: 使用append方法

    
    

    a.append(b)将b看成list一个元素和a合并成一个新的list,它和前面的方法的输出结果不同

    
    
    aList = [1,2,3]
    bList = ['www', 'pythontab.com']
    aList.append(bList)
    print(aList)
    # 结果:
    [1, 2, 3, ['www', 'pythontab.com']]
    
    

    总结:

    
    
    • 第一种方方法思路比较清晰,就是运算符的重载
    • 第二种方法比较简洁,但会覆盖原始list;
    • 第三种方法功能比较强大,可以将一个列表插入另一个列表的任意位置
    • 第四种方法类似于第二种方法,但是输出的结果不同,如何使用需要看需求而定
    python列表转换为字符串》
    list_a=["345"]
    str_a="".join(list_a)

    List 遍历的4种方法:
    方法1:

    for i in list:
    print i
    1
    2


    方法2:

    for i in range(len(list)):
    print i, list[i]
    1
    2


    方法3:

    for i in xrange(len(list)):
    print i, list[i]
    1
    2


    方法4:

    for i, j in enumerate(list):
    print i, j
    1
    2


    xrange 和range的区别:
    range会直接将所有结果生成一个list对象
    xrange则不会直接生成一个list,而是一个生成器,会每次调用返回其中的一个值
    因此,xrange的循环性能比range好,尤其是当列表返回很大的情况。但是当你需要返回是一个列表的话,可以使用range
    结论
    对比发现,效率最快的为方法1,但是如果需要获得列表下标,方法4略微比2、3好。在list特别大的情况下,方法3优于方法2



     讲讲深浅拷贝(拷贝的目标就是让数据复制并独立出来,拷贝越深,数据越独立):
          1.浅拷贝:数据不完全独立,比如列表拷贝,只有第一维数据被独立,而更高维度的数据会共享引用(即同步修改)。
          2.深拷贝:数据完全独立,比如列表拷贝,所有维度数据被独立。
          
    14、元组(tuple),定义用"()":有序、重复,tuple和list非常类似,但是tuple是不可变对象,一旦初始化就不能修改,只读,更安全。
        元组只保证它的一级子元素不可变,对于嵌套的元素内部,不保证不可变!
        如果可能,能用tuple代替list就尽量用tuple。
        最好以","结尾,当tuple只有一个元素时,必须以","结尾。    
        
        元组对象方法:
        1)count(self, value):统计元组中包含value元素的数量,返回一个int值。
        2)index(self, value, start=None, stop=None):索引,查找元组中value元素第一个出现的位置,start与stop参数是查找起始与结束位置,默认为None。
        3)[start:stop:step]:切片操作。
        
    15、for <元素> in <范围>:,循环就是把每个元素代入变量x,然后执行缩进块的语句。
        for _ in range(n):,使用下划线"_",循环n次执行循环体。此时"_"作为临时性的名称使用,忽略循环计数中的实际值。
    
    16、range(x1, x2, 步长)函数,可以生成一个整数序列,长度为(x2-x1),左闭右开规则。range(n)范围是"0 ~ n-1"。
    
    17、不要滥用break和continue语句。break和continue会造成代码执行逻辑分叉过多,容易出错。
        大多数循环并不需要用到break和continue语句。
        (1)break只能用于循环体内。其效果是直接结束并退出当前循环,剩下的未循环的工作全部被忽略和取消。
        (2)与break不同,continue语句用于跳过当前循环的剩余部分代码,直接开始下一轮循环。
    
    字典(dict)

    定义用{'k':'v'}:无序、不重复,字典是可变对象,在其他语言中也称为map,使用可哈希算法的键-值("key":"value")存储,具有极快的查找速度。字典无序。 通过in判断key是否存在,如果key不存在,返回false,如:'Thomas' in d;

    字典对象方法:

    • 1)clear(self):清除字典中的所有元素。
    • 2)copy(self):复制一份元组,相当于一次浅拷贝。
    • 3)fromkeys(self, iter, value=None):分别以iter中的元素为键,以value为值,创建一个字典。
    • 4)get(self, k, d=None):获取字典中键为k的值,如果字典中不包含k,则给出d值,d默认为None。
    • 5)items(self):遍历字典的一个方法,把字典中每对key和value组成一个元组,并把这些元组放在一个类似列表的dict_items中返回。
    • 6)keys(self):遍历字典键keys的一个方法,返回一个类似列表的dict_keys,与items方法用法相同。
    • 7) values(self):遍历字典值value的一个方法,返回一个类似列表的dict_values,与items方法用法相同。
    • 8)pop(self, k, d=None):弹除并返回字典中键为k的值。
    • 9)popitem(self):从字典中随机取出一组键值,返回一个新的元组。
    • 10)setdefault(self, k, default=None):从字典中获取键为k的值,当存在k时,功能和get基本一致,当字典中不存在k时,在原字典上添加键为k、值为default的项,并返回default值。
    • 11)update(self, E=None, **F):给字典新增元素,没有返回值。用法:dict.update(dict2)。

    (1)遍历key值

    复制代码
    >>> a
    {'a': '1', 'b': '2', 'c': '3'}
    >>> for key in a:
           print(key+':'+a[key])
     
    a:1
    b:2
    c:3
    >>> for key in a.keys():
           print(key+':'+a[key])
     
    a:1
    b:2
    c:3
    复制代码

    在使用上,for key in a和 for key in a.keys():完全等价。

    (2)遍历value值
    >>> for value in a.values():
           print(value)
     
    1
    2
    3

    (3)遍历字典项

    >>> for kv in a.items():
           print(kv)
     
    ('a', '1')
    ('b', '2')
    ('c', '3')

    (4)遍历字典健值

    复制代码
    >>> for key,value in a.items():
           print(key+':'+value)
     
    a:1
    b:2
    c:3
    >>> for (key,value) in a.items():
           print(key+':'+value)
     
    a:1
    b:2
    c:3
    复制代码

    在使用上for key,value in a.items()与for (key,value) in a.items()完全等价

    
    

     

     
  • 相关阅读:
    python相关软件安装流程图解————————pycharm安装——————pycharm-professional-2018.3.1
    爬虫——python——百度地图经纬度查询——经纬度查看地点地名——利用百度API获取地名经纬度——爬取所有的中国地址
    博客园自定义美化——博客园公告功能(公告栏圆形时钟)——博客园公告栏圆形时钟功能
    博客园自定义美化——博客园页脚功能(底部简介关注打赏)——博客园文章个性签名功能
    博客园自定义美化——博客园页首功能(右侧悬浮打赏)——右侧添加悬浮打赏功能
    Django项目:CMDB(服务器硬件资产自动采集系统)--12--08CMDB采集硬件数据日志记录
    Django项目:CMDB(服务器硬件资产自动采集系统)--11--07CMDB文件模式测试采集硬件数据
    centos 安装gitlab
    vscode 配置
    mssql下调用dll
  • 原文地址:https://www.cnblogs.com/liruilong/p/12496014.html
Copyright © 2020-2023  润新知