系列文章目录
一、深浅拷贝
-
浅拷贝:速度快,内存占用少
对于可变类型:只复制第一层。
对于不可变对象:只是复制它们的引用。
import copy # 导入模块。想要用拷贝功能?先拿过来! listB = copy.copy(listA) # 将a的值浅拷贝一份给b
-
深拷贝:数据独立性好
对于可变类型:复制数据的每一层,其中包含的不可变类型数据,还是只会复制引用。
对于不可变对象:无论深浅拷贝,都是复制引用!
import copy # 也是放在copy模块中 listB = copy.deepcopy(listA) # 将a的值深拷贝一份给b
二、数字类型的转换
-
int类型
-
定义:
a = 10
-
类型转换:
int(值) 会将传进去的值转换为int类型,并返回转换后的值。
a = int('10') # 将str类型的10转换为int类型,并将返回值保存到b中
float类型转换为int类型,会丢失精度!
a = int(3.14) # 3.14是float类型,转换为int类型时丢失精度,变为3 print(a) # 打印出的值为3
-
-
float类型
-
定义:
a = 3.14 # 有了小数点和小数部分,解释器就会自动判定为folat类型
-
类型转换:
float() 与 int() 类似,返回值为 float类型
float('3.14') # 字符串类型的3.14转换为folat类型的3.14 float(3) # 返回值为 3.0
-
三、字符串常用操作
-
定义:
a = 'hello' # 注意要有引号,单双皆可
-
获取指定字符:
字符串是一种有序的数据类型,因此可以通过下标(索引)来获取指定位置的字符。
注意:在绝大多数编程语言中,下标是从0开始的,python也是如此!
a = 'hello,world' print(a[0]) # 打印字符:h,方括号内的就是下标 print(a[6]) # 打印字符:w
还可以使用负数下标,表示从右往左取值,此时,是从-1开始计数。
a = 'hello,world' print(a[-1]) # 打印:d print(a[-3]) # 打印:r
-
切片:
通过索引,还可以将指定字符拷贝出来(在新的内存空间中创建字符串),形成一个新的子字符串。
拷贝的原因:str类型是不可变类型,即不可修改的,只能重新在内存中创建。a = 'hello,world' # 将hello取出,形成新的子字符串 b = a[0:5] # h的下标是0,而o的下标是4(需要往后移一位),所以是 0:5 print(b) # 打印:hello
使用步长:
a = 'xyxyxy' # 将所有的y取出 b = a[1:6:2] # 第一个y下标是1;最后一个字符下标是5,后移一位,所以为6;2表示每次在前一个下标的基础上加2,再读出字符 print(b) # 打印:yyy
反向步长:
a = '0123,456' b = a[3:0:-1] # 负数下标表示在前一个下标的基础上减去步长数 print(b) # 打印:321,因为是从第三个字符开始往左取值
如果开始或结束下标被省略,表示从第一个字符开始或最后一个字符结束。
a = 'hello,world' b = a[0::] # 结束下标被省略,表示取到最后一个字符d(包括d)结束 print(b) # 打印 hello,world # 将整个字符串倒过来 c = a[::-1] print(c) # 打印:dlrow,olleh
-
成员判断:
a = 'hello,world' print('world' in a) # 使用了成员运算符in,打印 True
-
移除指定字符-strip():
strip()默认移除空白字符,这里的空白字符指空格、tab等看不见的特殊字符。
-
移除两端的指定字符
a = ' hello ' b = a.strip() # 返回新的字符串(因为str是不可变类型,所以会另外申请内存) print(b) # 打印hello,两端的空白字符被移除 c = '---你---好---' print(c.strip('-')) # 指定移除的字符为‘-’,打印:你---好,不会移除中间的‘-’。
-
移除左边的指定字符:lstrip()
-
移除右边的指定字符:rstrip()
-
-
字符串分割-split():
a = 'hugh:18:male' b = a.split(':') # 指定分隔符,会根据分隔符将字符串分割,返回一个列表 print(b) # 打印:['hugh', '18', 'male']
-
字符串大小写转换:
-
字符串转换为小写-lower()
a = 'HELLO' print(a.lower()) # 打印:hello
-
字符串转换为大写-upper()
-
-
判断是否以指定字符开头或结尾
-
判断开头-startswith()
print('hello'.startswith('h')) # 打印:True
-
判断结尾-endswith()
-
-
拼接字符串-join():
a = ['hello', 'hugh', '17'] # 容器内不能包含非字符串,否则会报错 print(':'.join(a)) # 指定用 : 进行拼接,打印:hello:hugh:17
也可以手动拼接:
a = 'hello' + ':' + 'hugh' + ':' + '17' print(a)
-
替换-replace()
a = 'hello, 世界!' b = a.replace('世界', 'world') # 前面的是要被替换的字符,后面的是替换字符 print(b) # 打印:hello, world!
-
判断字符串是否是纯数字-isdigit()
print('123'.isdigit()) # 打印:True print('12.3'.isdigit()) # 打印:False,因为小数点不是数字
-
循环遍历:
a = 'hello' for i in a: print(i) # 会将hello中的字符一行一个的打印出来
-
否是纯数字-isdigit()
print('123'.isdigit()) # 打印:True print('12.3'.isdigit()) # 打印:False,因为小数点不是数字
其他类型的判断还有:
- islower():是否全为小写
- isupper():是否全为大写
- istitle():每个单词的首字母是否为大写
- isalnum():是否仅包含大小写字母和数字
- isalpha():是否仅包含大小写字母
-
循环遍历:
a = 'hello' for i in a: print(i) # 会将hello中的字符一行一个的打印出来