字符串是一个不可变类型。
字符串用一对双引号或一对单引号包裹,之所以两种引号都可以使用,是为了避免当字符串里面出现单引号或双引号时引起歧义。
用三对双引号或三对单引号表示多行的字符串。
1 | # 单行文本 |
字符串类型具有独有的功能,使用方法有两种,比如字符串n1 = "root"
,①n1.功能名()
②"root".功能名()
转换为整型
部分整型和字符串可以相互转换,比如
1 | str(19) # 把整型数据类型19转换成字符串类型 |
转换大小写
英文字符串可以使用upper()
可以使之转化为大写,使用lower()
使之转化为小写,比如:
1 | n1 = root |
判断字符串是否可以转化为整型
使用isdecimal()
可以判断一个字符串是否可以转化为整型,结果会得到一个布尔值,比如:
1 | n1 = "123" |
判断字符串的开头和结尾
使用startswith()
判断是否以某字符串开头,使用endwith()
判断是否以某字符串结尾
1 | n1 = "中华人民共和国" |
去除空白
空白是指空格、回车、制表符,使用strip()
去除左右两边的空白,使用lstrip()
和rstrip()
分别去除左边和右边的空白,上述三种方法并不能去除字符串中间的空白。
1 | n1 = " 台湾省 " |
替换字符串中的部分内容
用replace()
将字符串中的部分内容替换为另一部分内容
1 | n1 = "常州大学西太湖校区" |
字符串切割
使用split()
将字符串切割为几个部分,切割后得到的是一个列表,通过索引来获取各个切割后的各个部分
1 | campu_name = "常州大学-西太湖校区" |
字符串拼接
将多个字符串拼接起来有三种方法:①通过"+"
②字符串格式化 ③通过join()
通过"+"
1 | n1 = "常州大学西太湖校区" |
字符串格式化
使用format()
(推荐)
在一个字符串中使用{}代表了一个占位符,在字符串后面加上.format()
可以传入其他字符串到占位符里,比如
1 | text="我是{0},今年{1}岁".format("邓金俊",22) |
也可以不使用0,1的序号,那么format()
里面的字符串将会按顺序传入占位符里,比如
1 | text="我是{0},今年{1}岁".format("邓金俊",22) |
可以不使用0,1的序号,而是在format()
里面给进行替换的字符串命名,使用变量名来指代字符串,比如
1 | text="我是{name},今年{age}岁".format(name="邓金俊",age=22) |
字符串可以重用,比如
1 | text = "我是{0},今年{1}岁" |
使用%
在一个字符串中使用%
代表占位符,在字符串后面使用空格加上一个%
可以传入其他字符串到占位符里。%s
、%d
分别代表一个字符串和一个整型的占位符,与C语言中相似,比如:
1 | text="我是%s,今年%d岁" %("邓金俊",22) |
字符串按顺序传入,与format()
的用法相似,也可以进行字符串的重用
使用f-string
预先给字符串命名,需要传入字符串时再使用{}传入,字符串前要加上f
。f-string
是Python3.6版本后才出现的用法,比如:
1 | name="邓金俊" |
通过join()
将列表中的字符串拼接起来
列表中必须全部都是字符串,通过任意符号将所有字符串按顺序连接,比如:
1 | name_list = [ "张三" , "李四" , "王五" ] |
编码和解码
python中默认使用的是unicode方式编码的字符串类型,可以使用encode()
将字符串类型转化为字节类型,使用decode()
将字节类型转化为字符串类型,比如:
1 | n1 = "常州大学" |
字符串长度的补足
当需要将字符串的长度未达到预设的长度时,可以使用center()
、ljust()
、rjust()
对字符串长度进行补足,括号里放预设的长度和任意的填充符,center()
是将字符串放到填充符的中间,ljust()
和rjust()
是将字符串放到填充符的左边和右边,比如:
1 | n1 = "常州大学" |
字符串左边补0
使用zfill()
在字符串的左边进行补0,直到达到预设长度,是ljust()
的子集用法,常用于二进制字符串
1 | data = "01101" |
获取长度
使用len()
获取字符串长度,比如:
1 | name = "百里守约" |
索引
字符串的每个字符都有索引,通过 字符串名称[]
获取,比如:
1 | text = "常州大学西太湖校区" |
切片
通过字符串每个字符的索引,可以截取一部分字符串,通过 text[索引号:索引号]
获取(前取后不取),比如:
1 | text = "常州大学西太湖校区" |
循环输出
将字符串中的单个字符循环输出,两种方式,一种是通过字符索引+while
循环,另一种是通过for
循环,比如:
1 | data = "123456" |
包含
使用in
判断字符串中是否包含某个字符串,比如:
1 | text = "常州大学西太湖校区" |
列表是一个有序且可变的容器,里面的元素可以是不同的数据类型。
与字符串不同的是,列表是可变类型,绝大部分的功能都是对原列表进行操作。
追加
通过append()
在列表末尾追加一个元素,括号中是要追加的元素或者变量名,比如:
1 | list1 = [1,2,3] |
插入
通过insert()
在列表中任意位置插入一个元素,括号中是索引值和要追加的元素,比如:
1 | list1 = ["张三","李四",3,True] |
删除
删除有两种方式
remove()
通过元素值在列表中删除一个元素,比如:
1 | list1 = ["张三","李四",3,True] |
del
,通过索引值在列表中删除一个元素,比如:
1 | list1 = ["张三","李四",3,True] |
出列
通过pop()
在列表中获取到一个元素,该元素在列表中移出,括号中是索引值,比如:
1 | list1 = ["张三","李四",3,True] |
清空列表
通过clear()
清空列表中的所有元素,比如:
1 | list1 = ["张三","李四",3,True] |
排序
通过sort()
将列表中的元素进行排序,比如:
1 | list1 = ["3","1","8"] |
获取长度
通过len()
获取列表的长度,即列表中元素的个数,比如:
1 | list1 = ["3","1","8"] |
索引
列表中的元素同样对应索引值,从0
开始,也可以从后往前取,从-1
开始。
通过索引值可以对列表中的元素进行获取,修改和删除。
列表可以嵌套,即列表中的元素可以是一个列表,子列表中的每一个元素同样具有独立的索引值
切片
与字符串中的切片功能类似,通过两个索引值,截取列表中的部分元素,比如:
1 | list1 = ["张三","李四",3,True] |
对拿到的切片列表可以进行修改,比如:
1 | list1 = ["张三","李四",3] |
也可以对拿到的切片列表进行删除,比如:
1 | list1 = ["张三","李四",3] |
循环输出
使用for
可以循环输出列表元素,具有与字符串同样的操作:
1 | data_list = [11,22,33,44] |
包含
使用in
判断列表中是否包含某个元素。
python中提供了简便的语法,用一行代码生成列表、字典中的多个元素。
这是一个完整的推导式,括号内有三个部分,第一个部分是每次要生成的元素,第二个部分是生成元素的次数,第三个部分是元素需要满足的条件
1 | data_list = [i for i in range(101) if i > 10] # 大于10的100以内的整数 |
1 | data_list = [i for i in range(101)] # 100以内的整数 |
1 | data_list = [3 for i in range(101)] # 第一部分可以是任意数据类型 |
1 | data_list = [[1,2] for i in range(101)] # 第一部分可以是任意数据类型 |
1 | data_list = ["位序为{}".format(i) for i in range(101)] # 第一部分也可以是表达式 |
1 | data_list = [11,"cczu",{1,2,},34,True] |
元组是一个有序且不可变的容器,元素可以是不同的数据类型。
元组可以嵌套,但元组定义之后,元组的个数不能修改,元组中的元素也不能修改。比如:
1 | v1 = (1,"python",True,(1,2),[1]) |
但是,元组中的元素中的元素可以修改,比如元组中的列表中的元素可以修改,比如:
1 | v1 = (1,"python",True,(1,2),[1]) |
注意事项:如果括号中只有一个元素,且尾部没有逗号,则它不是元组,而是去除括号之后的值。比如:
1 | v1 = (666,) #是元组 |
无
获取长度
通过len()
获取元组中元素的个数。比如:
1 | v1 = (1,"python",True,(1,2),[1]) |
索引
元组中的元素同样具有索引值,但是不能删除和修改,只能读取。比如:
1 | v1 = (1,"python",True,(1,2),[1]) |
切片
通过索引值,可以获取元组中的部分元素。比如:
1 | v1 = (1,"python",True,(1,2),[1]) |
循环
通过for()
循环输出元组内的元素,比如:
1 | v1 = (1,"python",True,(1,2),[1]) |
包含
使用in
判断元组中是否包含某个元素。
字典是一个元素只能是键值对且键不重复的可变的容器。(python3.6
之前字典中的元素是无序的)比如:
1 | info = {"k1":123,"k2":456} # 里面的元素称为键值对 |
键必须是可哈希类型:
1 | int bool str tuple # 可哈希类型 |
获取所有键
字典可以通过key()
来获取字典中的所有键名,比如:
1 | v1 = {"name":"邓胖胖","age":23,"hobby":"学习"} |
获取所有值
字典可以通过values()
来获取字典中的所有值,比如:
1 | v1 = {"name":"邓胖胖","age":23,"hobby":"学习"} |
获取所有键值对
字典可以通过items()
来获取字典中的所有键值对,比如:
1 | v1 = {"name":"邓胖胖","age":23,"hobby":"学习"} |
通过键名获取值
字典通过get()
来获取值,括号中是键名。比如:
1 | v1 = {"name":"邓胖胖","age":23,"hobby":"学习"} |
获取长度
通过len()
获取字典中键值对的个数,比如:
1 | v1 = {"name":"邓胖胖","age":23,"hobby":"学习"} |
索引
与字符串、列表和元组中的索引不同,字典中的索引是指键名,比如:
1 | v1 = {"name":"邓胖胖","age":23,"hobby":"学习"} |
循环
通过for()
循环输出字典中的所有键名或键值或键值对,独有功能中已经描述。
包含
使用in
判断字典中是否包含某个键。比如:
1 | if "hobby" in v1: |
字典推导式的方法与列表推导式基本相同,第一部分是键值对的形式,键和值都可以自定义
1 | data_dict = {i:pow(i,2) for i in range(11) if i>5} # 需要注意键必须是可哈希类型 |
集合是一个无序、可变、元素必须可哈希且元素不重复的容器。
集合的定义
1 | # 定义一个空列表、元组或字典有两种方法 |
添加元素
通过add()
向集合中添加一个元素,比如:
1 | s1 = {11,22} |
删除元素
通过discard()
从集合中删除一个元素,比如:
1 | s1 = {11,22} |
交集
获取两个集合的交集有两种方式,一种是使用&
符号,另一种是通过intersection()
获取交集,比如:
1 | v1 = {1,2,3} |
并集
获取两个集合的并集有两种方式,一种是使用|
符号,另一种是通过union()
获取交集,比如:
1 | v1 = {1,2,3} |
差集
获取两个集合的差集有两种方式,一种是使用-
符号,另一种是通过difference()
获取交集,比如:
1 | v1 = {1,2,3} |
获取长度
通过len()
获取集合中元素的个数,比如:
1 | v1 = {1,2,3} |
循环
通过for()
循环输出集合中的元素,比如:
1 | v1 = {1,2,3} |
包含
通过in
判断集合中时候包含某元素(集合中的元素必须是可哈希类型)
列表、元组或集合可以相互转换,比如:
1 | v1 = [1,2,3] # 列表 |
None表示空值,相当于其他语言中的null
bool类型有两个值:
1 | True:真 |
很多类型的值都可以转化为bool
值,极个别转化为False
1 | 0,"",[],(),{},set(),None -> False |
浮点型,就是小数,比如:
1 | v1 = 9.23 |
由于计算机底层浮点型的存储原理,有时候获取的值可能不太准确。
字节类型是由字符串类型转化而来的,比如:
1 | n1 = "常州大学" |
同样的,拿到了字节类型,也可以使用decode()
转化为字符串类型,比如:
1 | v2 = b'\xb3\xa3\xd6\xdd\xb4\xf3\xd1\xa7' |