• 数据类型的总结


    字符串的总结

      字符串不能改变(存储方式:Unicode)  没有增删改  只可以查

        可以进行   索引/切片

        和以下方法:

    二.字符串所有数据类型:
    
     
    
    基本操作:
    
     
    
    索引
    切片
    追加
    删除
    长度
    切片
    循环
    包含
     
    
     str
    三.所有字符串数据类型举例
    #变量名字变大写
    tmp = "zhangyanlin"
    tmp_new = tmp.upper()
    print(tmp_new)
     
    # 输出所有字符定义的所有类型
    tmp.upper()
    print(dir(tmp))
    #['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__',
    '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__',
    '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center',
    'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier',
    'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind',
    'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
    #把首字母变成大写 u1 = "zhang" u2 = u1.capitalize() print(u2) #20定义20个位,不够用_补全。 u1 = "zhang" u2 = u1.center(20 ,'_') print(u2) #看zh在前10位出现了几次 u1 = "zhangyanlin is zhgod" u2 = u1.count('zh',0, 10) print(u2) #获取字符串中大于等于0的位置,小于2的位置 u1 = "zhang" print(u1.endswith('h',0,2)) #将tab转换成空格 u1 = "zhang 123" print(u1.expandtabs(20)) #找位数,相同只能找第一个出现的,没有想应得会反馈-1 u1 = "zhang hello" print(u1.find('h')) #站位符0和1是代表站位符 u1 = "name {0}, age {1}" print(u1.format("zhang",18)) u1 = " zhang is yan " #判断是否是字母 print(u1.isalpha()) #判断是否是数字 print(u1.isdigit()) #判断是否是字母和数字 print(u1.isalnum()) #判断是否是小写 print(u1.islower()) #判断是否是空格 print(u1.isspace()) #判断是不是标题 print(u1.istitle()) #判断是不是全部都是大写 print(u1.isupper()) #把列表里的内容连接一起 print("_".join(u1)) #内容左对齐,右侧填充 print(u1.ljust(1)) #内容变小写 print(u1.lower()) #移除左边的空格 print(u1.lstrip()) #移除右边的空格 print(u1.rstrip()) #把有空格的内容分割,变成元祖类型,从左找;rpartition从右开始分割 print(u1.partition('is')) #替换,后面可以加替换几个,从左往右 print(u1.replace('zh','ZH')) #找到一个字符分割,从右,split从左分割 print(u1.rsplit('a',1)) #是否以某个字符串开始开始 print(u1.startswith('z')) #移除两边空格(strip) print(u1.strip()) #大写变小写,小写变大写 print(u1.swapcase()) #变大写(upper) print(u1.upper()) 四.索引 u1 = "zhangyanlin" print(u1[0]) print(u1[1]) print(u1[2]) print(u1[3]) print(u1[4]) print(u1[5])    五.切片 #切出zhan,注:0是代表第一位,4代表小于四,知道第三个数 u1 = "zhangyanlin" print(u1[0:4]) 六.循环切片 1.while使用 u1 = "zhangyanlin" u2 = 0 while u2 < len(u1): print(u1[u2]) u2+=1 2.for使用 #循环切片 u1 = "zhangyanlin" for u2 in u1: print(u2) #循环切片,输出除了y u1 ="zhangyanlin" for u2 in u1: if u2 =="y": continue print(u2) #循环切片,输出到y后不执行 u1 ="zhangyanlin" for u2 in u1: if u2 =="y": break print(u2) 字符串格式化

    列表的总结:

    列表可以进行: 索引/切片 

        对于列表来说:在循环时,最好不要进行删除的动作(一旦删除索引也会随之改变),容易出错。可以反方向删除(不会改变索引)

       

    2.5.1、增。
     
    
    li = [1,'a','b',2,3,'a']
    # li.insert(0,55) #按照索引去增加
    # print(li)
    #
    # li.append('aaa') #增加到最后
    # li.append([1,2,3]) #增加到最后
    # print(li)
    #
    # li.extend(['q,a,w']) #迭代的去增
    # li.extend(['q,a,w','aaa'])
    # li.extend('a')
    # li.extend('abc')
    # li.extend('a,b,c')
    # print(li)
    
    、删。
     
    
    # l1 = li.pop(1) #按照位置去删除,有返回值
    # print(l1)
    
    # del li[1:3] #按照位置去删除,也可切片删除没有返回值。
    # print(li)
    
    # li.remove('a') #按照元素去删除
    # print(li)
    
    其他操作。
    count(数)(方法统计某个元素在列表中出现的次数)。
    1 a = ["q","w","q","r","t","y"]
    2 print(a.count("q"))
    index(方法用于从列表中找出某个值第一个匹配项的索引位置)
    1 a = ["q","w","r","t","y"]
    2 print(a.index("r"))
    sort (方法用于在原位置对列表进行排序)。
     reverse (方法将列表中的元素反向存放)。
    1 a = [2,1,3,4,5]
    2 a.sort()# 他没有返回值,所以只能打印a
    3 print(a)
    4 a.reverse()#他也没有返回值,所以只能打印a
    5 print(a)
    
    # li.clear() #清空列表
    
    改。
     
    
    #
    # li = [1,'a','b',2,3,'a']
    # li[1] = 'dfasdfas'
    # print(li)
    # li[1:3] = ['a','b']
    # print(li)
    
    
    查
    
    切片去查,或者循环去查

    元祖的总结

      元祖:

        元祖不能改变,所以只能进行“查”

    ************************************************************************************************************************

    ************************************************************************************************************************

    字典的总结

        

    dic = {'k1':'v1','k2':'v2','k3':'v3'}
    #1
    #dic['k4'] = ['v4']  #有则覆盖,没有则添加
    #2
    #dic.setdefault('k6','v6')   #有的话就不作为,没有的话就添加
    #print(dic)
    
    #
    #dic.pop('k1',None)    #pop是根据键来删除键值对,可以设置默认值,否则如果没有改键会报错
    #print(dic)
    
    # print(dic.popitem())      #随机删除字典中的某个键值对,将删除的键值对以元祖的形式返回
    # print(dic)
    
    # dic.clear()
    # print(dic)
    
    # del dic
    # print(dic)
    
    # del dic['ke']       #del 也可以根据键来删除值
    # print(dic)
    
    #
    #1.dic['k1'] = 'mi'    #找到指定的键的位置直接就可以把值改了 直接覆盖
    
    #2.dic1 = {'m1':'x1','m2':'x2'}
    # dic.update(dic1)
    # print(dic)
    
    #
    #1.dic['键名'] = '值'      #可以直接让一个根据键得到值,但是如果没有会报错
    #2.dic.get('键名',设置返回值)如果不设置返回值,没有此键的话也不会报错,会returnNone
    #print(dic.get('m6'))
    
    其他操作。
     
    
    # item = dic.items()
    # print(item,type(item))  # dict_items([('name', 'jin'), ('sex', 'male'), ('age', 18)]) <class 'dict_items'>
    # 这个类型就是dict_items类型,可迭代的
    
    # keys = dic.keys()
    # print(keys,type(keys))  # dict_keys(['sex', 'age', 'name']) <class 'dict_keys'>
    
    # values = dic.values()
    # print(values,type(values))  # dict_values(['male', 18, 'jin']) <class 'dict_values'> 同上
    
    
    字典的循环。
    
    # dic = {"name":"jin","age":18,"sex":"male"}
    # for key in dic:
    #     print(key)
    # for item in dic.items():
    #     print(item)
    # for key,value in dic.items():
    #     print(key,value)  
    View Code

    集合的总结

        集合:无序,它里面的元素是可哈希的,它本身是不可哈希的所以它不能作为字典的键(但是可以用)

      关系测试,测试两组数据之前的交集、差集、并集等关系。
    1,集合的创建。
    set1 = set({1,2,'barry'})
    set2 = {1,2,'barry'}
    print(set1,set2)  # {1, 2, 'barry'} {1, 2, 'barry'}
    2,集合的增。
    
    set1 = {'alex','wusir','ritian','egon','barry'}
    set1.add('景女神')
    print(set1)
    
    #update:迭代着增加
    set1.update('A')
    print(set1)
    set1.update('老师')
    print(set1)
    set1.update([1,2,3])
    print(set1)
    
    3,集合的删。
    
    set1 = {'alex','wusir','ritian','egon','barry'}
    
    set1.remove('alex')  # 删除一个元素
    print(set1)
    
    set1.pop()  # 随机删除一个元素
    print(set1)
    
    set1.clear()  # 清空集合
    print(set1)
    
    del set1  # 删除集合
    print(set1)
    
    4,集合的其他操作:
      4.1 交集。(&  或者 intersection)
    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 & set2)  # {4, 5}
    print(set1.intersection(set2))  # {4, 5}
      4.2 并集。(| 或者 union)
    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 | set2)  # {1, 2, 3, 4, 5, 6, 7}
    
    print(set2.union(set1))  # {1, 2, 3, 4, 5, 6, 7}
      4.3 差集。(- 或者 difference)
    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 - set2)  # {1, 2, 3}
    print(set1.difference(set2))  # {1, 2, 3}
       4.4反交集。 (^ 或者 symmetric_difference)
    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 ^ set2)  # {1, 2, 3, 6, 7, 8}
    print(set1.symmetric_difference(set2))  # {1, 2, 3, 6, 7, 8}
      4.5子集与超集
    
    set1 = {1,2,3}
    set2 = {1,2,3,4,5,6}
    
    print(set1 < set2)
    print(set1.issubset(set2))  # 这两个相同,都是说明set1是set2子集。
    
    print(set2 > set1)
    print(set2.issuperset(set1))  # 这两个相同,都是说明set2是set1超集。
    
    5,frozenset不可变集合,让集合变成不可变类型。
    s = frozenset('barry')
    print(s,type(s))  # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>
     二,深浅copy
    1,先看赋值运算。
    
    l1 = [1,2,3,['barry','alex']]
    l2 = l1
    
    l1[0] = 111
    print(l1)  # [111, 2, 3, ['barry', 'alex']]
    print(l2)  # [111, 2, 3, ['barry', 'alex']]
    
    l1[3][0] = 'wusir'
    print(l1)  # [111, 2, 3, ['wusir', 'alex']]
    print(l2)  # [111, 2, 3, ['wusir', 'alex']]
    
    对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的。
    2,浅拷贝copy。
    
    l1 = [1,2,3,['barry','alex']]
    
    l2 = l1.copy()
    print(l1,id(l1))  # [1, 2, 3, ['barry', 'alex']] 2380296895816
    print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2380296895048
    l1[1] = 222
    print(l1,id(l1))  # [1, 222, 3, ['barry', 'alex']] 2593038941128
    print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2593038941896
     
    l1[3][0] = 'wusir'
    print(l1,id(l1[3]))  # [1, 2, 3, ['wusir', 'alex']] 1732315659016
    print(l2,id(l2[3]))  # [1, 2, 3, ['wusir', 'alex']] 1732315659016
    
    对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。
    3,深拷贝deepcopy。
    
    import copy
    l1 = [1,2,3,['barry','alex']]
    l2 = copy.deepcopy(l1)
    
    print(l1,id(l1))  # [1, 2, 3, ['barry', 'alex']] 2915377167816
    print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2915377167048
    
    l1[1] = 222
    print(l1,id(l1))  # [1, 222, 3, ['barry', 'alex']] 2915377167816
    print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2915377167048
    
    l1[3][0] = 'wusir'
    print(l1,id(l1[3]))  # [1, 222, 3, ['wusir', 'alex']] 2915377167240
    print(l2,id(l2[3]))  # [1, 2, 3, ['barry', 'alex']] 2915377167304
    
    对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。
    View Code

     frozenset可以将可变类型转换成不可变类型

    set1 = {1,2,3,4}

    set2 = frozenset(set1)

    print(set2)

    类型是frozenset      #这样就可以做字典的键了

  • 相关阅读:
    黄聪:C#使用能够foreach对hashtable、List遍历时“集合已修改;可能无法执行枚举操作。”错误
    黄聪:[C#]如何获取变量的名字,不是值,是名称。返回名字的字符串
    黄聪:js 获取浏览器、Body、滚动条、可见区域、页面、边框、窗口高度和宽度值(多浏览器)
    黄聪:WIN7下回收站不小心删除的文件怎么恢复,免费数据恢复软件下载
    黄聪:中国大陆的所有IP段,中国电信所有IP段、中国铁通所有IP段、中国网通所有IP段。
    黄聪:将自己开发的插件发布到WordPress官方插件站(转)
    黄聪:利用iframe实现ajax 跨域通信的解决方案(转)
    python 画任意多边形
    python 绘图加上文字
    Python将多张图片进行合并拼接
  • 原文地址:https://www.cnblogs.com/zsdbk/p/8652372.html
Copyright © 2020-2023  润新知