zoukankan      html  css  js  c++  java
  • Python列表、元组、字典、集合的内置使用方法

    列表:
        是一种可以存储多个值得数据容器
        内容是有序的
        可以存储任何数据类型
        可以存储重复的元素
        是可变类型(当内容发生变化时id不变)
    
    元组:
        也是一种可以存储多个值得数据容器
        元组中的元素不可以被修改
        可以存储任何数据类型
        可以存储重复的元素
        是不可变类型
    
        元素和列表到底谁快?
            列表在增加和删除元素时都涉及到一个扩充容量和减少容量的操作,而元组没有这个过程,所以元组速度会略快列表
            例如:
                对列表调用一个pop方法和对元组直接取指
    
        元组的定义方式:
            变量名 =  (value1,value,...n)
            注:一旦元组被创建了,它的内容也就固定了
    
        index 可以找出某个元素在元组中的位置,如果没有直接报错
    
        count 统计元素在元组中出现的次数
    
    字典:
        字典是什么:
            可以存储多个键值对的数据容器
            键值对是: 以 key value形式存在的一对数据
            key必须是不可变的数据类型
            value可以是任意类型
            字典是可变的(内容可以被修改而且id不会变)
            key不可以重复
            value可重复
            字典是无序的
    
        字典定义的方式:
            1.变量名 = {key:value}
            2.变量名 = dict()
            3.变量名 = {}
            4.变量名 = dict(key=value)
        存储键值对到字典中
        在创建同时就可以指定
        加入新的键值对[key]=value     注:如果key已存在会更新对应的值
        字典名[key]=value
    
        字典名.setdefault[key,value]   注:如果字典中已经存在相同的key则什么都不做,否则就添加
    
    取值:
    
         通过key取出value           注:如果字典中没有所要取的key,程序奔溃
         print(字典[key]
    
         get 通过key取出value       注:如果字典中没有所要取得key,返回None
         print(字典.get(key))
    
         循环取值:
         每一次取到的是key
         for 变量名 in 字典:
            print(变量名)
    
        items 用于取出键值对,这些键值对被打包在一起
        for 变量名 in 字典.items():
            print(变量名)
    
        keys 用于取出所有键 key,取出的类型是dict_keys类型
        print(字典.keys())
    
        values 用于取出有的值 value,取出的类型是dict_values类型
        print(字典.values())
    
    
    删除键值对:
    
        1. del 通用删除方法,不会返回被删除的值
        del 字典[key]
    
        2. pop 自带删除方法
           根据key删除指定的[key:value],会返回被删除的值
        字典.pop(key)
    
        3. popitem 随机删除方法
           随机删除一个[key:value],会返回被删除的值
        字典.popitem()
    
    更新:
        update 如果字典A中有字典B的key,就不操作,如果没有就添加[key:value]
        字典A 字典B
        字典A.update(字典B)
    
    集合:
        集合是什么:
            可以存储多个值得数据容器
            特点:
                元素是无序的
                可变的
                不可以存储重复元素(id相同)
                只能存储不可变数据类型
        集合的定义方式:
            变量名 = {值1,值2,.....}
        集合更多的用在计算两个集合之间的关系的场景
    
        交集:
            写法1:
                & 取出两个集合中相同的元素
                print(集合A & 集合B)
            写法2:
                intersection
                print(集合A.intersection(集合B))
            求两个结果的交集并用结果更新集合B
            print(集合A.intersection_update(集合B))
            后面加_update(意思就是将结果复制给(集合B),集合B的原值全部清除
        并集(合集):
            写法1:
                | 合并两个集合中所有的元素(有重复的元素只显示一个元素)
                print(集合A | 集合B)
            写法2:
                union
                print(集合A.union(集合B))
    
        差集:
            写法1:
                - 求出两个集合中相差的元素(注: 多的集合减少的集合能得出差集,如果少的差集减多的差集返回空)
                print(集合A - 集合B)
            写法2:
                difference
                print(集合A.difference(集合B))
                求两个结果的差集并用结果更新集合B
            print(集合A.difference_update(集合B))
            后面加_update(意思就是将结果赋值给(集合B),集合B的原值全部清除
        对称差集:
            写法1:
                ^ 除了交集以外的元素都是对称差集
                print(集合A ^ 集合B)
            写法2:
                symmetric_difference    后面可加_update
                print(集合A.symmetric_difference(集合B))
    
        子集:
            issubset
            print(集合A.issubset(集合B))
            集合A中的所有元素都出现在了集合B中,集合A就是集合B的子集
        父集:
            issuperset
            print(集合B.issuperset(集合A))
            集合B中包含了集合A中的元素,集合B就是集合A的父集
        无交集:
            isdisjoint
            print(集合A.isdisjoint(集合B))
            无交集返回Ture,有交集返回False
    
    添加元素:
        add
        print(集合.add())
    
        update()
        一次添加多个值
    
    删除:
        随机删除:
            .pop()
        删除指定元素:
            .remove()
            没有找到要删除的元素程序会奔溃
    
            .discard()
            没有找到要删除的元素程序不会奔溃
    
    移除空白:
     strip()   取出字符串两边的空格
    lstrip()   取出字符串左边的空格
    rstrip()   取出字符串右边的空格
    可以添加参数 指定要去除的字符串
    
    切分:
    split()    括号中第一个参数表示用什么作为分割符,第二个参数表示切几次
    rsplit()   从右往左切
    没有参数则代表使用空格作为分隔符
    
    字符串替换:
    replace()  括号中第一个参数表示旧的内容,第二个参数表示新的内容
    
    大小写转换:
    upper()    转换成全大写
    lower()    转换成全小写
    isupper()  判断是否全大写
    islower()  判断是否全小写
    title()    单词首字母转成大写
    istitle()  判断单词首字母是否大写
    capitalize() 将首字母转化成大写
    swapcase() 大小写交换
    
    判断字符串开头结尾:
    startswith() 判断字符串是否以某个字符串开头
    endswith() 判断字符串是否以某个字符串结尾
    
    字符串的链接:
    split() 字符串转换成列表("括号中需要定义一个分隔符")
    join() 将列表转换成字符串 "格式: X="|".join(list)
    
    格式化字符串:
    format()
    {}   根据占位符来进行替换
    {index}  根据指定的索引进行替换
    {name} 根据指定的名字进行替换
    例如:   my name is {}  age is {} ”.format(参数1....,参数n)
               print("my name is %s age is %s" % ("yyh","20"))
               print("my name is {name} age is {age}".format(name="yyh",age="20"))
    
    查找:
    find 查找一个字符串出现在另一个字符串中的位置 如果没有返回-1
    rfind 从右往左查找一个字符串出现在另一个字符串中的位置 如果没有返回-1
    index 查找一个字符串出现在另一个字符串中的位置 如果没有直接报错
    rindex从右往左查找一个字符串出现在另一个字符串中的位置 如果没有报错
    count 查找一个字符串出现在另一个字符串中的次数
    
    填充:
    center 在内容左右添加相同长度的字符 使内容居中
    rjust  在右边添加符号 使其达到指定的长度
    ljust  在左边添加符号 使其达到指定的长度
    zfill在 左边添加0 使其达到指定的长度
    
    is数字系列:
    isdigit    如果S中的所有字符都是数字,并且在S中至少有一个字符,则返回True
    isdecimal 如果S中只有十进制字符,则返回True,否则为False
    isnumeric 如果S中只有数字字符,则返回True,否则为False。
    
    追加:
    append 用于在列表末尾添加新的对象。
  • 相关阅读:
    洛谷p1017 进制转换(2000noip提高组)
    Personal Training of RDC
    XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Eurasia
    XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Peterhof.
    Asia Hong Kong Regional Contest 2019
    XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Siberia
    XVIII Open Cup named after E.V. Pankratiev. Ukrainian Grand Prix.
    XVIII Open Cup named after E.V. Pankratiev. GP of SPb
    卜题仓库
    2014 ACM-ICPC Vietnam National First Round
  • 原文地址:https://www.cnblogs.com/earon/p/9372107.html
Copyright © 2011-2022 走看看