zoukankan      html  css  js  c++  java
  • Python开发【第二章】:补充

    一.字符串方法讲解:

      1 #---------字符串各种方法----------
      2 s = "Hello world!"
      3 
      4 #1.swapcase():大小写互换
      5 print(s.swapcase())
      6 #输出:hELLO WORLD!
      7 
      8 #2.capitalize():返回第一个字符为大写,其他字符为小写
      9 #源码:
     10 '''
     11 Return a capitalized version of S, i.e. make the first character
     12         have upper case and the rest lower case.
     13 '''
     14 print(s.capitalize())
     15 #输出:Hello world!
     16 
     17 #3.casefold():返回所有字符为小写
     18 #源码:
     19 '''
     20 Return a version of S suitable for caseless comparisons.
     21 '''
     22 print(s.casefold())
     23 #输出:hello world!
     24 
     25 #4.center():参数为一个数字和一个字符,在这个数字为长度的范围内,字符串居中,两边由那个字符补足
     26 print(s.center(50,'#'))
     27 #输出:###################Hello world!###################
     28 
     29 #5.count():统计字符串中某个字符的个数,也可以从一个范围开始
     30 #如:print(s.count('o',0,5))  输出为1
     31 print(s.count('o'))
     32 #输出:2
     33 
     34 #6.endswith():判断字符串以什么结尾
     35 print(s.endswith('d!'))
     36 #输出:True
     37 
     38 #7.expandtabs():扩展tab键
     39 s2 = 'a	b'    #	就是tab键
     40 print(s2.expandtabs())
     41 #输出:a       b    #tab键默认8个空格
     42 print(s2.expandtabs(20))   #tab键可以指定空格
     43 #输出:a                   b
     44 
     45 #8.find():返回字符在字符串中的位置,没有则返回-1;也可以从一个范围开始
     46 #如:print(s.find('o',0,3))  输出:-1
     47 print(s.find('o'))
     48 #输出:4
     49 print(s.find('sdaf'))
     50 #输出:-1
     51 
     52 #9.format():字符串格式化输出
     53 #方法一:
     54 s3 = 'my name is {0},i am {1} years old'
     55 print(s3.format('Mm',18))
     56 #输出:my name is Mm,i am 18 years old
     57 
     58 #方法二:
     59 s4 = 'my name is {name},i am {age} years old'
     60 print(s4.format(name = 'Mm',age = 18))
     61 #输出:my name is Mm,i am 18 years old
     62 
     63 #10.isalnum():是否为阿拉伯数字或字符
     64 print('22'.isalnum())
     65 #输出:True
     66 
     67 #11.isalpha():是否为字符
     68 print('mm'.isalpha())
     69 #输出:True
     70 
     71 #12.isdecimal():是否是个数字
     72 
     73 #13.isdigit():是否是个数字
     74 
     75 #14.isidentifier():是否是个合法的变量名
     76 
     77 #15.islower():是否都是小写
     78 
     79 #16.isnumeric():是否都是数字
     80 
     81 #17.isprintable():是否是可打印的(文本文件或者是字节型文件)
     82 
     83 #18.issapce():判断是否是空格
     84 print(' '.isspace())
     85 #输出:True
     86 
     87 #19.istitle():判断是不是标题
     88 
     89 #20.isupper():判断是不是都是大写
     90 
     91 #21.join():列表元素以一种方式,如下例中的'*'连接成字符串
     92 names = ['mm','mumu','tt']
     93 print('*'.join(names))
     94 #输出:mm*mumu*tt
     95 
     96 #22.ljust():右填充
     97 print(s.ljust(50,'*'))
     98 #输出:Hello world!**************************************
     99 
    100 #23.rjust():左填充
    101 print(s.rjust(50,'#'))
    102 #输出:######################################Hello world!
    103 
    104 #24.lower():将字符串改成小写
    105 print(s.lower())
    106 #输出:hello world!
    107 
    108 #25.upper():将字符串改成大写
    109 print(s.upper())
    110 #输出:HELLO WORLD!
    111 
    112 #26.strip():去掉空格或换行
    113 
    114 #27.lstrip():只去掉左边空格或换行
    115 
    116 #28.rstrip():只去掉右边空格或换行
    117 
    118 #29.maketrans():生成对应表
    119 #30.translate():翻译
    120 str_in = 'abcdef'
    121 str_out = '!@#$%^'
    122 
    123 table = str.maketrans(str_in,str_out)
    124 
    125 print(table)
    126 #输出:{97: 33, 98: 64, 99: 35, 100: 36, 101: 37, 102: 94}
    127 
    128 print(s.translate(table))
    129 #输出:H%llo worl$!
    130 
    131 #31.partition():一个字符串以其中的字符分割成三段
    132 print(s.partition('o'))
    133 #输出:('Hell', 'o', ' world!')
    134 
    135 #32.rpartition():一个字符串以其中的字符分割成三段,从右边开始寻找
    136 print(s.rpartition('o'))
    137 #输出:('Hello w', 'o', 'rld!')
    138 
    139 #33.replace():替换,不指定一个数字将全部换掉
    140 print(s.replace('o','*',1))
    141 #输出:Hell* world!
    142 
    143 #34.rfind():从右边开始找,找不到的时候为-1
    144 print(s.rfind('l'))
    145 #输出:9
    146 
    147 #34.rindex():从右边找,当找不到的时候报错
    148 
    149 #35.split(): 默认以空格来分割字符串为列表
    150 print(s.split())
    151 #输出:['Hello', 'world!']
    152 
    153 #36.rsplit():从右边开始分
    154 #如:
    155 print(s.split('o',1))
    156 print(s.rsplit('o',1))
    157 #输出:
    158 # ['Hell', ' world!']
    159 # ['Hello w', 'rld!']
    160 
    161 #37.splitlines():按行来分
    162 t = 'a
    b
    mm
    c'
    163 print(t.splitlines())
    164 #输出:['a', 'b', 'mm', 'c']
    165 
    166 #38.startswith():判断以什么开始
    167 print(s.startswith('He'))
    168 #输出:True
    169 
    170 #39.zfill():字符串变成一个长度的,不够用0填充
    171 print(s.zfill(40))
    172 #输出:0000000000000000000000000000Hello world!

    二.元组类型:

      (1)特性:
         1.不可变
         2.元组本身不可变,如果元组中包含其他可变元素,这些可变元素可以改变

      (2)功能:
         1.index
         2.count
         3.切片

      (3)使用场景:
         1.显示的告知别人,此处数据不可修改
         2.数据库连接配置信息等

    三.hash函数:

      (1)定义:将任意长度的消息压缩到某一固定长度的消息摘要的函数

      (2)特征:     hash值的计算过程是依据这个值的一些特征计算的,这就是要求hash的值必须固定,因此被hash的值必须是不可变的。

      (3)用途:
         1.文件签名
         2.md5加密
         3.密码验证

    四.字典类型:

      (1)特性:
         1.key-value结构
         2.key必须可hash,且必须为不可变数据类型,必须唯一
         3.可存放任意多个值,可修改,可以不唯一
         4.无序
         5.查找速度快(key转换成hash数字,然后排序,通过二分法来查找,最多2的多少次幂,但是hash不是这种方法,但是更快)

      (2)方法:

     1 info = {
     2     'stu001':'mm',
     3     'stu002':'tt',
     4     'stu003':'mumu'
     5 }
     6 
     7 方法:
     8 #1.clear():清空字典
     9 
    10 #2.copy():类似于列表的深浅copy
    11 
    12 #3.values():
    13 print(info.values())
    14 #输出:dict_values(['mm', 'tt', 'mumu'])
    15 
    16 #4.keys():
    17 print(info.keys())
    18 #输出:dict_keys(['stu001', 'stu002', 'stu003'])
    19 
    20 #5.items():
    21 print(info.items())
    22 #输出:dict_items([('stu001', 'mm'), ('stu002', 'tt'), ('stu003', 'mumu')])
    23 
    24 #6.updates():两个字典组合起来,当有相同的key时,更新的value会替换掉原有的value
    25 dic1 = {1:2,2:3,'stu003':['mumu','small dog']}
    26 info.update(dic1)
    27 print(info)
    28 #输出:{'stu001': 'mm', 'stu002': 'tt', 'stu003': ['mumu', 'small dog'], 1: 2, 2: 3}
    29 
    30 #7.setdefault():输入的key如果字典中有,则不更新,如果没有,则创建
    31 info.setdefault('test','new')
    32 
    33 #8.fromkeys():批量创造字典元素
    34 
    35 #9.循环:
    36 for k in info:
    37      print(k,info[k])
    38 #输出:
    39 # stu001 mm
    40 # stu002 tt
    41 # stu003 ['mumu', 'small dog']
    42 # 1 2
    43 # 2 3
    44 # test new
    45 
    46 for k,v in info.items():  #相对低效,有一个字典转换成列表的过程
    47     print(k,v)
    48 #输出:
    49 # stu001 mm
    50 # stu002 tt
    51 # stu003 ['mumu', 'small dog']
    52 # 1 2
    53 # 2 3
    54 # test new

    (3)习题:

      1 #写代码,有如下字典,按照要求实现每一个功能:dic = {'k1':'v1','k2':'v2','k3':'v3'}
      2 
      3 #1.请循环遍历出所有的 key
      4 dic = {'k1':'v1','k2':'v2','k3':'v3'}
      5 for k in dic:
      6     print(k)
      7 # k1
      8 # k2
      9 # k3
     10 
     11 #2.请循环遍历出所有的 value
     12 for k in dic:
     13     print(dic[k])
     14 # v1
     15 # v2
     16 # v3
     17 
     18 #3.请循环遍历出所有的 key 和 value
     19 for k in dic:
     20     print(k,dic[k])
     21 # k1 v1
     22 # k2 v2
     23 # k3 v3
     24 
     25 #4.请在字典中添加一个键值对,'k4':'v4',输出添加后的字典
     26 dic['k4'] = 'v4'
     27 print(dic)
     28 #输出:{'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'k4': 'v4'}
     29 
     30 #5.请删除字典中键值对 'k1':'v1',并输出删除后的字典
     31 dic.pop('k1')
     32 #或者
     33 #del dic['k1']
     34 print(dic)
     35 
     36 #输出:{'k2': 'v2', 'k3': 'v3', 'k4': 'v4'}
     37 
     38 #6.请删除字典中的键'k5'对应的键值对,如果字典中不存在键'k5',则不报错,并且让其返回 None
     39 
     40 # for k in dic:
     41 #     if dic.get('k5'):
     42 #         dic.pop('k5')
     43 #         print(dic)
     44 #     else:
     45 #         print(dic.get('k5'))
     46 # # None
     47 # # None
     48 # # None
     49 # #返回3个none,在检查考虑一下
     50 
     51 if dic.get('k5'):
     52     dic.pop('k5')
     53     print(dic)
     54 else:
     55     print(dic.get('k5'))
     56 #输出:None
     57 
     58 #7.请获取字典中'k2'对应的值
     59 print(dic['k2'])
     60 #输出:v2
     61 
     62 #8.请获取字典中'k6'对应的值,如果键'k6'不存在,则不报错,并且让其返回 None
     63 print(dic.get('k6'))
     64 #输出:None
     65 
     66 #9.现有 dic2 = {'k1':'v111','a':'b'}通过一行操作使 dic2 = {'k1':'v1','k2':'v2','k3':'v3','a':'b'}
     67 dic2 = {'k1':'v111','a':'b'}
     68 dic2.update({'k1':'v1','k2':'v2','k3':'v3'})
     69 print(dic2)
     70 #输出:{'k1': 'v1', 'a': 'b', 'k2': 'v2', 'k3': 'v3'}
     71 
     72 #10.组合嵌套题,学代码,有如下列表,按照要求实现每一个功能
     73 lis = [['k',['qwe',20,{'k1':['tt',3,'1']},89],'ab']]
     74 #a.将列表lis中的'tt'变成大写(用两种方式)
     75 # lis[0][1][2].get('k1')[0] = 'TT'
     76 # print(lis)
     77 # #输出:[['k', ['qwe', 20, {'k1': ['TT', 3, '1']}, 89], 'ab']]
     78 print(lis[0][1][2].get('k1')[0].upper())
     79 print(lis[0][1][2].get('k1')[0].swapcase())
     80 # TT
     81 # TT
     82 
     83 #b.将列表中的数字 3 变成字符串 '100'(用两种方式)
     84 lis[0][1][2].get('k1')[1] = '100'
     85 print(lis)
     86 #输出:[['k', ['qwe', 20, {'k1': ['tt', '100', '1']}, 89], 'ab']]
     87 
     88 dic3 = {'k1': ['tt', '100', '1']}
     89 lis[0][1][2].update(dic3)
     90 print(lis)
     91 #输出:[['k', ['qwe', 20, {'k1': ['tt', '100', '1']}, 89], 'ab']]
     92 
     93 #c.将列表中的字符串'1'变成数字101(用两种方式)
     94 lis[0][1][2].get('k1')[2] = 101
     95 print(lis)
     96 #输出:[['k', ['qwe', 20, {'k1': ['tt', '100', 101]}, 89], 'ab']]
     97 
     98 dic4 = {'k1': ['tt', '100', 101]}
     99 lis[0][1][2].update(dic4)
    100 print(lis)
    101 #输出:[['k', ['qwe', 20, {'k1': ['tt', '100', 101]}, 89], 'ab']]
    102 
    103 #11 按照要求实现以下功能:
    104 
    105 #现有一个列表li = [1,2,3,'a','b',4,'c'],有一个字典(此字典是动态生成的,你并不知道他里面有多少键值对,所以
    106 
    107 #用dic = {}模拟此字典);现在需要完成这样的操作:如果该字典没有'k1'这个键,那就创建'k1'键和其对应的值(该键对应的值设置为空列表)
    108 
    109 #并将列表li 中的 索引为奇数的对应元素,添加到'k1'这个键对应的空列表中。如果该字典有'k1'这个键,且'k1'对应的value
    110 
    111 #是列表类型,那就将li中的索引为奇数的对应元素,添加到'k1'这个键对应的键中
    112 
    113 li = [1,2,3,'a','b',4,'c']
    114 
    115 dic = {}
    116 
    117 if not 'k1' in dic:
    118     dic['k1'] = []
    119     for i in li:
    120         if li.index(i) %2 == 1:
    121             dic['k1'].append(i)
    122 else:
    123     if type(dic['k1']) == type([]):
    124         for i in li:
    125             if li.index(i) %2 == 1:
    126                 dic['k1'].append(i)
    127     print("字典k1,value不是列表,无法追加!")
    128 
    129 print(dic)

    五.集合类型:

     (1) 集合是一个无序的,不重复的数据组合,它的主要作用如下:
         1.去重,把一个列表变成集合,就自动去重了
         2.关系测试,测试两组数据之前的交集,差集,并集的关系

    (2)方法:

     1 #1.去重:
     2 s = {1,2,3,4,2,3,7}
     3 print(s)
     4 #输出:{1, 2, 3, 4, 7}
     5 
     6 #2.可将列表和元组转换成集合
     7 l = [2,3,4,3,4,5]
     8 s1 = set(l)
     9 print(s1)
    10 #输出:{2, 3, 4, 5}
    11 
    12 #3.add:增加
    13 s.add(6)
    14 print(s)
    15 #输出:{1, 2, 3, 4, 6, 7}
    16 
    17 #4.pop:随机删除
    18 s.pop()
    19 print(s)
    20 #输出:{2, 3, 4, 6, 7}
    21 
    22 #5.remove:删除,不存在会报错
    23 s.remove(7)
    24 print(s)
    25 #输出:{2, 3, 4, 6}
    26 
    27 #6.discard:删除,不存在不报错
    28 
    29 #7.update:两个集合联合
    30 
    31 #8.clear:清除

      (3)集合关系测试:

     1 #1.交集:intersection和&
     2 iphone7 = {'tt','mm','zz'}
     3 iphone8 = {'mm','zz','mumu'}
     4 
     5 print(iphone7.intersection(iphone8))
     6 #输出:{'mm', 'zz'}
     7 print(iphone7 & iphone8)
     8 #输出:{'mm', 'zz'}
     9 
    10 #2.差集:difference和-
    11 print(iphone7.difference(iphone8))
    12 #输出:{'tt'}
    13 print(iphone7 - iphone8)
    14 #输出:{'tt'}
    15 
    16 #3.并集:union 和 |
    17 print(iphone7.union(iphone8))
    18 #输出:{'zz', 'tt', 'mumu', 'mm'}
    19 print(iphone7 | iphone8)
    20 #输出:{'zz', 'tt', 'mumu', 'mm'}
    21 
    22 #4.对称差集:symmetric_difference和^
    23 s2 = {1,2,3,4}
    24 s3 = {2,3,5,6}
    25 print((s2|s3)-(s2&s3))
    26 #输出:{1, 4, 5, 6}
    27 
    28 print(s2.symmetric_difference(s3))
    29 #输出:{1, 4, 5, 6}
    30 print(s2^s3)
    31 #输出:{1, 4, 5, 6}
    32 
    33 #5.issubset:判断是否为子集 <=
    34 s3.add(1)
    35 s3.add(4)
    36 print(s3)
    37 #输出:{1, 2, 3, 4, 5, 6}
    38 print(s2.issubset(s3))
    39 #输出:True
    40 
    41 #6.issuperset:判断是否为父集  >=
    42 print(s3.issuperset(s2))
    43 #输出:True
    44 
    45 #7.isdisjoint:判断两个集合是不是不相交
    46 
    47 #8.s2.difference_update(s3):将两者的差集赋值给s2
  • 相关阅读:
    一行代码搞定Dubbo接口调用
    测试周期内测试进度报告规范
    jq 一个强悍的json格式化查看工具
    浅析Docker容器的应用场景
    HDU 4432 Sum of divisors (水题,进制转换)
    HDU 4431 Mahjong (DFS,暴力枚举,剪枝)
    CodeForces 589B Layer Cake (暴力)
    CodeForces 589J Cleaner Robot (DFS,或BFS)
    CodeForces 589I Lottery (暴力,水题)
    CodeForces 589D Boulevard (数学,相遇)
  • 原文地址:https://www.cnblogs.com/mumupa0824/p/8550471.html
Copyright © 2011-2022 走看看