深浅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\tb'
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('\n 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 = '\n hello world  '
63 print(s.translate(table))                   #结果为:'\n h%llo worl$ ^;
64 
65 
66 s = '\n hello world  '
67 print(s.partition('o'))                    #结果为:('\n hell', 'o', ' world  ')
68 
69 s = '\n 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\nb\nalex\nc'
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