zoukankan      html  css  js  c++  java
  • 深浅copy、字符串类型讲解

                                                     深浅copy

    • 浅copy      也就是完全克隆一份 

     1 a = 1
     2 b = a
     3 print(a,b)                #结果为:(1, 1)
     4 print(id(a),id(b))        #结果为:(140710231659552, 140710231659552)
     5 
     6 a = 4
     7 print(b)                  #结果为:1
     8 print(id(a),id(b))        #结果为:(140710231659648, 140710231659552)
     9 
    10 
    11 names = ['alex','jack',1,'mack','racheal','shanshan']
    12 print(names)              #结果为:['alex', 'jack', 1, 'mack', 'racheal', 'shanshan']
    13 n2 = names
    14 print(n2)                 #结果为:['alex', 'jack', 1, 'mack', 'racheal', 'shanshan']
    15 
    16 names[2] = '-1'
    17 print(names)              #结果为:['alex', 'jack', '-1', 'mack', 'racheal', 'shanshan']
    18 print(n2)                 #结果为:['alex', 'jack', '-1', 'mack', 'racheal', 'shanshan']
    19 
    20 
    21 #copy
    22 names = ['alex','jack',3,'mack','racheal','shanshan']
    23 n2 = names.copy()
    24 print(n2,names)           #结果为:(['alex', 'jack', 3, 'mack', 'racheal', 'shanshan'], ['alex', 'jack', 3, 'mack', 'racheal', 'shanshan'])
    25 print(n2)                 #结果为:['alex', 'jack', 3, 'mack', 'racheal', 'shanshan']
    26 
    27 print(names[2])           #结果为:3
    28 names[2] = '-1'
    29 print(names)              #结果为:['alex', 'jack', '-1', 'mack', 'racheal', 'shanshan']
    30 print(n2)                 #结果为:['alex', 'jack', 3, 'mack', 'racheal', 'shanshan']
    31 
    32 
    33 #浅copy
    34 names.append(['longting',24])
    35 print(names)              #结果为:['alex', 'jack', '-1', 'mack', 'racheal', 'shanshan', ['longting', 24]]
    36 n3 = names.copy()
    37 print(n3)                 #结果为:['alex', 'jack', '-1', 'mack', 'racheal', 'shanshan', ['longting', 24]]
    38 
    39 print(names [0])          #结果为:'alex'
    40 names [0] = 'Alex Li'
    41 print(names)              #结果为:['Alex Li', 'jack', '-1', 'mack', 'racheal', 'shanshan', ['longting', 24]]
    42 print(n3)                 #结果为:['alex', 'jack', '-1', 'mack', 'racheal', 'shanshan', ['longting', 24]]
    43 
    44 print(names[-1])          #结果为:['longting', 24]
    45 names[-1][0] = '龙婷'
    46 print(names)              #结果为:['Alex Li', 'jack', '-1', 'mack', 'racheal', 'shanshan', ['龙婷', 24]]
    47 print(n3)                 #结果为:['alex', 'jack', '-1', 'mack', 'racheal', 'shanshan', ['龙婷', 24]]
    48 
    49 print(id(names),id(n3))           #结果为:(2663641027912, 2663640059272)
    50 print(id(names[1]),id(n3[1]))     #结果为:(2663641507184, 2663641507184)
    51 
    52 print(id(names[-1]),id(n3[-1]))   #结果为:(2663640059784, 2663640059784)
    53 print(id(n3[-1][0]))              #结果为:2663640887120
    • 深copy

      1 #深copy
      2 import copy
      3 n4 = copy.deepcopy(names)
      4 print(n4)                #结果为:['Alex Li', 'jack', '-1', 'mack', 'racheal', 'shanshan', ['龙婷', 24]]
      5 print(names[-1][0])      #结果为:'龙婷'
      6 names[-1][0] = 'LT'
      7 print(names)             #结果为:['Alex Li', 'jack', '-1', 'mack', 'racheal', 'shanshan', ['LT', 24]]
      8 print(n4)                #结果为:['Alex Li', 'jack', '-1', 'mack', 'racheal', 'shanshan', ['龙婷', 24]]

                                                字符串类型讲解

    • 创建字符串:

                s = ‘Hello,beauty!How are you?’

    • 字符串的特性:

               有序

              不可变

    • 查看源代码的方法:

              按住 Ctrl 键  点击 swapcase

    • 字符串类型

     1 s = "hello world!"
     2 print(s.capitalize())               #结果为:Hello world!
     3 print(s.center(50,'*'))             #结果为:*******************Hello World!*******************
     4 print(s.center(50,'-'))             #结果为:-------------------Hello World!-------------------
     5 print(s.count('o'))                 #结果为:2      全局统计字符o的数量
     6 print(s.count('o',0,5))             #结果为:1      指定范围统计字符o的数量
     7 print(s.endswith('!'))              #结果为:True   判断是否是以“!”结尾
     8 print(s.endswith('!jsdf'))         #结果为:False;
     9 s2 = 'a	b'
    10 print(s2)                           #结果为:a       b
    11 print(s2.expandtabs(20))            #结果为:a              b      指定数量的字符长度
    12 print(s.find('o'))                  #结果为:4            查找值并返回他的索引,找不到就返回负数
    13 print(s.find('osdf'))               #结果为:-1
    14 print(s.find('o',0,3))              #结果为:-1
    15 print(s.find('o',0,5))              #结果为:4
    16 
    17 s3 = "my name is {0},i am {1} years old."
    18 print(s3.format('Alex',22))         #结果为:my name is Alex,i am 22 years old.
    19 s3 = "my name is {name},i am {age} years old."
    20 print(s3.format(name='wuqianqian',age=20))#结果为:my name is wuqianqian,i am 20 years old.
     1 print(s.index('o'))                     #结果为:4    返回字符的索引值
     2 print(s.index('o',5,6))                 #结果为:ValueError: substring not found    在指定范围内查找
     3 
     4 print('22'.isalnum())                   #结果为:True         用来判断像不像阿拉伯(字符、数字)
     5 print('22d'.isalnum())                  #结果为:True
     6 print('22d!'.isalnum())                 #结果为:False
     7 
     8 print('22'.isalpha())                   #结果为:False        用来判断像不像阿拉伯(字符)
     9 print('22d'.isalpha())                  #结果为:False
    10 print('dd'.isalpha())                   #结果为:True
    11 
    12 print(''.isdecimal())                    #结果为:False        用来判断像不像阿拉伯(整数)
    13 print('33'.isdecimal())                  #结果为:True
    14 print('33s'.isdecimal())                 #结果为:False
    15 print('33。3'.isdecimal())               #结果为:False
    16 
    17 print('333'.isdigit())                   #结果为:True           与isdecimal是一样的
    18 
    19 print('333'.isidentifier())              #结果为:False          判断是否为一个合法的变量名
    20 print('d333'.isidentifier())             #结果为:True
    21 
    22 print('3sdff33'.islower())               #结果为:True           判断是否都是小写
    23 print('3sdfF33'.islower())               #结果为:Flase
    24 
    25 print('3d3'.isnumeric())                  #结果为:Flase         判断是否只有数字在里面
    26 print('111'.isnumeric())                  #结果为:True
    27 
    28 print('33'.isprintable())                 #结果为:True          判断是否可以打印文本文件(Linux中一切皆文件)
    29 
    30 print('a a a'.isspace())                  #结果为:Flase         判断是否是空格
    31 print(''.isspace())                        #结果为:Flase
    32 print(' '.isspace())                       #结果为:True
    33 
    34 print('Hello world'.istitle())           #结果为:Flase         判断单词首字母是否均为大写
    35 print('Hello World'.istitle())           #结果为:True
    36 
    37 print('Hello World'.isupper())           #结果为:Flase         判断是否全为大写
    38 print('HELLO WORLD'.isupper())           #结果为:True
    39 
    40 names = ['alex','jack','rain']
    41 print(''.join(names))                      #结果为:alexjackrain
    42 print(','.join(names))                     #结果为:alex,jack,rain
    43 print('*'.join(names))                     #结果为:alex*jack*rain
    44 
    45 print('Hello World'.ljust(50,'-'))       #结果为:Hello World--------------------------------------
    46 print('Hello World'.rjust(50,'-'))       #结果为:--------------------------------------Hello World
    47 print('Hello World'.upper())              #结果为:HELLO WORLD
    48 print('Hello World'.lower())              #结果为:hello world
    49 print('HELLO WOLRD'.isupper())            #结果为:True
    50 print('hello world'.islower())            #结果为:True
    51 
    52 print('hello world  '.strip())           #结果为:hello world        去掉多余的空格、换行、Tab键
    53 print('
     hello world  '.strip())        #结果为:hello world
    54 print('hello world  '.lstrip())          #结果为:hello world         去左不去右
    55 print('hello world  '.rstrip())          #结果为:hello world         去右不去左
    56 
    57 
    58 str_in = 'abcdef'
    59 str_out = '!@#$%^'
    60 table = str.maketrans(str_in,str_out)       #生成对应关系表
    61 print(table)                                #结果为:{{97: 33, 98: 64, 99: 35, 100: 36, 101: 37, 102: 94}
    62 s = '
     hello world  '
    63 print(s.translate(table))                   #结果为:'
     h%llo worl$ ^;
    64 
    65 
    66 s = '
     hello world  '
    67 print(s.partition('o'))                    #结果为:('
     hell', 'o', ' world  ')
    68 
    69 s = '
     hello world  '
    70 print(s.replace('h','H'))                 #结果为: Hello world  替换
    71 print(s.replace('0','-',1))               #结果为: hell- world  指定更换的数量
    72 
    73 
    74 s = 'hello world'
    75 print(s.rfind('o'))                        #结果为:7        从右侧开始查找
    76 print(s.rfind('fdf'))                     #结果为:-1   从右侧开始查找,找不到返回-1
    77 print(s.rindex('fdffgfh',0,10))          #结果为:从左侧开始查找,指定范围,找不到会报错:ValueError: substring not found;
    78 
    79 
    80 s = 'Hello World'
    81 print(s.rpartition('o'))                  #结果为:('Hell', W', 'rld')
    82 print(s.split('l'))                       #结果为:['He', '', 'o Wor', 'd']
    83 print(s.rsplit('o',1))                    #结果为:['Hello W', 'rld']     指定次数分割
    84 
    85 s = 'a
    b
    alex
    c'
    86 print(s16.splitlines())                   #结果为:['a', 'b', 'alex', 'c']        按照行来进行分割
    87 
    88 s = 'hello world'
    89 print(s.startswith('he'))                #结果为:True
    90 print(s.startswith('He'))                #结果为:False
    91 print(s.startswith('fdsk'))              #结果为:False
    92 print(s.endswith('fdsk'))                #结果为:False
    93 print(s.endswith('rld'))                 #结果为:True
    94 print(s.endswith('RLD'))                 #结果为:Flase
    95 print(s.swapcase())                       #结果为:HELLO WORLD     小写变成大写
    96 print(s.zfill(20))                        #结果为:000000000hello world  将字符串变成20位长度,不够的用0填充;
    • 重要的字符串类型

    1          isdigit           用来判断像不像阿拉伯(整数)
    2          replace           替换
    3          find              查找值并返回他的索引,找不到就返回-1
    4          cout              统计字符的数量
    5          strip             去掉多余的空格、换行、Tab键
    6          center            ******Hello World!******
    7          split             分割
    8          format            my name is Alex,i am 22 years old.
    9          join             alex,jack,rain
  • 相关阅读:
    【prufer编码】BZOJ1430 小猴打架
    【费马小定理】BZOJ3260 跳
    【欧拉函数】BZOJ2705: [SDOI2012]Longge的问题
    【卡特兰数】BZOJ1485: [HNOI2009]有趣的数列
    【缩点+拓扑判链】POJ2762 Going from u to v or from v to u?
    【Floyd】BZOJ1491: [NOI2007]社交网络
    【转】对信息学竞赛中调试方法的建议
    【建图+拓扑判环】BZOJ3953: [WF2013]Self-Assembly
    【dfs判负环】BZOJ1489: [HNOI2009]最小圈
    【二分+最小树形图】UVA11865 比赛网络
  • 原文地址:https://www.cnblogs.com/wqq0723/p/9525518.html
Copyright © 2011-2022 走看看