深浅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