2.python基础知识点2
各位小伙伴想要博客相关资料的话关注公众号:chuanyeTry即可领取相关资料!
1.数据类型
- 学汉语:拼音、数字、汉字、词语、成语,写文章 —> 老师批改。
- 学编程:整型、字符串、布尔值 ,写程序(写代码) -> 计算机。
布尔值(bool):True False
整型(int) :1 19 22 300
字符串(str) :"中国联通" "广西壮族自治区" "北京市"
upper/lower/isdecimal/strip/lstrip/rstrip/replace
列表(list) :[11,22,33] ["张三","李四","赵五",11, 22 ,True]
元组(tuple) :(11,22,33) ("张三","李四","赵五",11, 22 ,True)
字典(dict) :{ "k1":123 , "k2":456 } {"n1":1,"N2":True}
n1 = "root"
res = n1.upper() # res = "ROOT"//变成大写字母
a
n2 = "admin"
value = n2.upper() # value = "ADMIN"
data_list1 = [11,22,33,44]
data_list1.append(55) # 列表的功能,在列表的尾部追加某个值 [11,22,33,44,55]
data_list2 = [1,2,3]
data_list2.append(55) # 列表的功能,在列表的尾部追加某个值 [1,2,3,55]
接下来我们学习是:某个中类独有的功能 & 公共功能。
1.1 字符串类型
1.1.1 定义
name = "张三"
email = "xxxx@live.com"
注意:字符串是一个不可变类型。字符串不可变!!!
1.1.2 独有功能
data = "root"
res = data.功能名() # res=新的值
-
大写和小写
name = "root" res = name.upper()//.upper()大写 print(res) # "ROOT" print(name) # "root"//原来值不变
name = "ROOT" res = name.lower()//.lower()小写 print(res) # "root" print(name) # "ROOT"
# 你们以前去注册/等某个网站时,让你填写验证码(不区分大小写)。 code = input("请输入验证码(FbeY):") big_code = code.upper() if big_code == "FBEY": print("验证码正确") else: print("验证码错误")
code = input("请输入验证码(FbeY):") big_code = code.lower() if big_code == "fbey": print("验证码正确") else: print("验证码错误")
-
isdecimal,判断字符串里面是不是整数
isdecimal//isdecimal//判断字符串里面有没有整数.isdecimal()值为True或False data = "12" v1 = data.isdecimal() print(v1) # True
data = "a2" v1 = data.isdecimal() print(v1) # False
text = input("请输入一个数字:") # "123" if text.isdecimal(): print("输入正确") else: print("非数字")
-
startswith和endswith,判断字符串是以xx开头或xx结尾。
name = "中华人民共和国" v1 = name.startswith("中华") # True a = name.startswith("开头") a = name.endswith("结尾") v2 = name.endswith("中华") # False
address = input("请输入你的家庭住址:") if address.startswith("北京市"): print("京户") else: print("非京户")
file_name = "xxxxxxx.png" if file_name.endswith("png"): print("一张图片") else: print("不是图片")
-
strip/lstrip/rstrip,去除空白(空格、换行符\n、制表符\t)。
strip去除两边空格,中间去除不掉//lstrip去除左边的//rstrip去除右边的name = " 台湾省 " v1 = name.strip() # "台湾省" v2 = name.lstrip() # "台湾省 " v3 = name.rstrip() # " 台湾省"
name = input("请输入姓名:") # " ",如果直接回车就相当于输入空字符串。 data = name.strip() if data == "": print("输入不能为空") else: print(data)
if 123: pass else: pass
name = input("请输入姓名:") # " " data = name.strip() # data = "" -> False if data: # 用户输入的姓名不为空 else: # 用户输入为空
name = input("请输入姓名:") # " " data = name.strip() # data = "" -> False if not data: # 用户输入为空 else: # 用户输入的姓名不为空
while True: num_1 = input("请输入第一个数字:") # " " num_1 = num_1.strip() # "" if not num_1: print("输入不能为空") continue if num_1.isdecimal(): break while True: num_2 = input("请输入第二个数字:") num_2 = num_2.strip() if num_2: if num_2.isdecimal(): break else: print("输入不能为空") res = int(num_1) + int(num_2) print(res)
去除空白:包含空格、换行、制表符tab键\t
-
replace,替换replace
text = "广西张三李四" data = text.replace("张三","李冉") print(text) # "广西张三李四" print(data) # "广西李冉李四"//不改变原来的
2.字符串(str)
2.1 定义
v = "xxxx"
2.2 独有功能
-
大写a.upper()
-
小写a.lower()
-
是否是数字a.isdecimal
-
替换a.replace(“1”,“2”)
-
去除空白/左边/右边a.stript().lstript().rstript()
-
切割
file_name = "day01 python基础编程入门.mp4" # 切割字符串后得到的是一个列表 # 0 1 # data_list = [ "day01 python基础编程入门" , "mp4" ] data_list = file_name.split(".")//flie.split(".") data_list[0] # "day01 python基础编程入门" data_list[1] # "mp4"
text = "张三,root,wupeiqi@live.com,19" # 0 1 2 3 # ["张三","root","wupeiqi@live.com","19"] data_list = text.split(",") data_list[0] data_list[1] data_list[2] data_list[3]
-
拼接
# 1.字符串相加 v1 = "张三" v2 = "大神" text = v1 + "是" + v2
# 2.字符串格式化 v1 = "张三" v2 = "大神" text = "{}是{}".format(v1,v2)
# 3.列表,里面有很多字符串,你想要让他们按照某个连接符拼接起来。注意事项:想要通过join去拼接,列表中必须都是字符串。 data_list = ["张三杰","张三绝","张三萍","张三坤"] res = "_".join(data_list) print(res) # "张三杰_张三绝_张三萍_张三坤" a = "_".join(list)
data_list = ["张三杰","张三绝","张三萍","张三坤"] res = ",".join(data_list) print(res) # "张三杰,张三绝,张三萍,张三坤"
data_list = ["张三杰","张三绝","张三萍","张三坤"] res = "".join(data_list) print(res) # "张三杰张三绝张三萍张三坤"
注意事项:想要通过join去拼接,列表中必须都是字符串。
-
字符串转换成字节类型
字符串 unicode 字节 utf-8/gbk(文件存储、网络传输)
data = "中国联通" v1 = data.encode("utf-8")//"中国联通"压缩的值 print(v1) # b' \xe4 \xb8 \xad \xe5\x9b\xbd \xe8\x81\x94 \xe9\x80\x9a' # 01110010 10111000
text = v1.decode("utf-8")//"中国联通"解压的值 print(text) # "中国联通"
-
长度的补足
name = "张三" text = name.center(13,"*")//居中,总长度为13 print(text) # "*****宁摆场*****"
name = "张三" text = name.ljust(13,"#")//原值放左边 print(text) # "宁摆场##########"
name = "张三" text = name.rjust(13,"#")//原值放右边 print(text) # "##########宁摆场"
-
长度的补足,只能在左边补0(二进制字符串前面补0)
name = "张三" v1 = name.zfill(10)//补足,总长度为10,,,,zfill print(v1) # "0000000张三"
data = "10101" res = data.zfill(8) print(res) # "00010101"
2.3 公共功能
-
长度a = len(“str”)
name = "张三" res = len(name) print(res) # 2
v1 = len("张三yy8899") print(v2) # 8
-
索引
# 0 1 2 3 4 5 6 7 8 9 10 11 text = "我 要 学 习 P y t h o n 编 程" text[0] # "我" text[8] # "o" text[10] # "编" v1 = 3 text[v1] # "习" text[100] # 报错,不能超出范围取值 v2 = len(text) - 1 # 12 text[v2] # "程"
text = "我要学习python编程" index = 0 while index < len(text): print(text[index]) index += 1
# 0 1 2 3 4 5 6 7 8 9 10 11 # -3 -2 -1 text = "我 要 学 习 P y t h o n 编 程" text[-1] # "程"
-
切片//前取后不取,字符串无法改变,切片是原来字符串切出来拷贝一份
# 0 1 2 3 4 5 6 7 8 9 10 11 # -3 -2 -1 text = "我 要 学 习 P y t h o n 编 程" text[0:2] # "我要" text[2:8] # "学习Pytho" text[2:-1] # "学习Python编" text[2:] # "学习Python编程"//从2开始到最后 text[:-1] # "我要学习Python编"//从开始到编 text[:] # "我要学习Python编程"//全部 # 注意:1.前取后不取; 2.索引位置是从0开始。
num = 189 # 1.转换成二进制的字符串 bin_string = bin(num) # '0b10111101' # 2.不要0b, data="10111101" data = bin_string[2:] # 3.将二进制字符串补足16位,在他的前面补0 result = data.zfill(16) print(result) # "0000000010111101"
-
循环
给你一个字符串 data = "我要学习Python编程" ,让你循环字符串中的每个元素。 - while循环+索引 - for循环
-
while循环
data = "我要学习Python编程" index = 0 while index < len(data): char = data[index] print(char) index += 1
-
for循环,直接获取。
data = "我要学习Python编程"//字符串 for item in data://for i in data: print(i) print(item)
data = [11,22,33,44,55,66]//列表 for item in data: print(item) .. .. ...
# range函数作用,帮助你生成一个数字列表。从0开始,前取后不取 v1 = range(5) # [0,1,2,3,4]//0-4 v2 = range(5,10) # [5,6,7,8,9]//5-9 v3 = range(5,10,2) # [5,7,9]//5,7,9 v5 = range(10,0,-1) # [10,9,8,7,6,5,4,3,2,1]//10-1
for item in range(5): # [0,1,2,3,4] print(item) for item in range(5,10): # [5,6,7,8,9] print(item) for item in range(10,0,-1): # [10,9,8,7,6,5,4,3,2,1] print(item)
# 请实现获取字符串中的每个元素并输出。 data = "我要学习Python编程" # 方式1 index = 0 while index < len(data): char = data[index] print(char) index += 1 # 方式2 for item in data: print(item) # 方式3 for idx in range(len(data)): # [0,1,2,3,4,5,6,7,8,9,10,11] char = data[idx] print(char)
-
3.列表(list)
列表,是一个有序且可变的容器,元素可以是多种不同的数据类型。
3.1 定义
data_list = [ 11, 22, "中国俩通", True]
data = []
data.append(11)
data.append(999)
注意:列表是可变类型,绝大部分的功能都是对原列表操作。
3.2 独有功能
-
追加
data_list = [] data_lista.append(11) data_lista.append("wupeiqi")
hobby_list = [] while True: hobby = input("请输入你的爱好:") if hobby.upper() == "Q": break hobby_list.append(hobby)//list.append()
-
插入,把数据插入到那个位置。
# 0 1 2 3 user_list = ["陈清","李阳金","马其坤","刘东"] user_list.insert(1,"孟东珏")//插入到索引为1的地方 print(user_list) # ["陈清", "孟东珏", "李阳金","马其坤","刘东"]
user_list = ["李柔","周雪梅","卢慧","孟东珏","陈清","李阳金","马其坤","刘东"] user_list.insert(0,"孟东珏") user_list.insert(0,"卢慧") user_list.insert(0,"周雪梅") user_list.insert(0,"李柔")
# 案例:排队 user_list = [] while True: name = input("请输入姓名:") if name.upper() == "Q": break if name.startswith("刁")://输入名字前有刁放第一位 user_list.insert(0,name) else: user_list.append(name)
-
删除(值删除)
user_list = ["李柔","周雪梅","卢慧","孟东珏","陈清","李阳金","马其坤","刘东"] user_list.remove("陈清清")//list.remove(删除元素),删除从左到右的第一个符合要求的元素 # ["李柔","周雪梅","卢慧","孟东珏","李阳金","马其坤","刘东"] print(user_list)
注意:利用remove去删除列表的元素时,如果元素不存在,则会报错。
user_list = ["李柔","周雪梅","卢慧","孟东珏","陈清","李阳金","马其坤","刘东"] if "陈清清" in user_list: user_list.remove("陈清清")
# 抽奖小程序 import random # 1.构造200名员工并存放在列表中。 user_list = [] for i in range(1, 201): name = "工号-{}".format(i) user_list.append(name) # 2.随机抽取1名员工,发奖金20w # 随机去user_list列表中抽取一个数据 data = random.choice(user_list)//randon.choice()随机抽取一个数据 print("获得3等奖的是:", data) # 将用户在列表中删除 user_list.remove(data) # 随机去user_list列表中抽取一个数据 data = random.choice(user_list) print("获得2等奖的是:", data)
-
删除(索引位置)
user_list = ["李柔","周雪梅","卢慧","孟东珏","陈清","李阳金","马其坤","刘东"] user_list.pop(1)//根据索引位置删除元素 # ["李柔", "卢慧","孟东珏","陈清","李阳金","马其坤","刘东"] print(user_list)
user_list = ["李柔","周雪梅","卢慧","孟东珏","陈清","李阳金","马其坤","刘东"] user_list.pop()//默认删除尾部元素 # ["李柔","周雪梅","卢慧","孟东珏","陈清","李阳金","马其坤"] print(user_list)
user_list = ["李柔","周雪梅","卢慧","孟东珏","陈清","李阳金","马其坤","刘东"] # 1.在原列表中删除指定索引位置的值 # 2.将刚删除的数据获取到并赋值前面的变量。 data = user_list.pop(1) print(data) # "周雪梅" print(user_list) # ["李柔", "卢慧","孟东珏","陈清","李阳金","马其坤","刘东"]
# 排队买火车票 # 1.排队买票的人 user_queue = [] while True: name = input("上海~北京火车票,购买者姓名(Q/q):") if name.upper() == "Q": break user_queue.append(name) # 2.放了3张票 for i in range(3): username = user_queue.pop(0) message = "恭喜{},购买成功".format(username) print(message) # 3.通知其他人,无票,请选择其他出行方式 others = ",".join(user_queue) data = "票已售罄,请以下人员选择其他出行方式:{}".format(others) print(data)
-
清空列表
user_list = ["李柔","周雪梅","卢慧","孟东珏","陈清","李阳金","马其坤","刘东"] user_list.clear()//list.clear() print(user_list) # []
-
列表元素排序
num_list = [11, 22, 8, 12, 99, 231, 1] num_list.sort()//排序,默认从小到大 print(num_list) # [1, 8, 11, 12, 22, 99, 231]
num_list = [11, 22, 8, 12, 99, 231, 1] num_list.sort(reverse=True)//从大到小 print(num_list) # [231, 99, 22, 12, 11, 8, 1]
中文排序的规则:unicode(了解)
user_list = ["页子", "青青", "韦神", ] user_list.sort() print(user_list) # ['青青', '韦神', '页子']
3.3 公共功能
-
长度//列表长度
data_list = [11,22,33,44] res = len(data_list) print(res) # 4
-
索引
# 0 1 2 3 4 5 6 7 # ... -2 -1 user_list = ["李柔","周雪梅","卢慧","孟东珏","陈清","李阳金","马其坤","刘东"] # 获取值 user_list[0] user_list[2] user_list[ len(user_list)-1 ] user_list[-1] # 修改//列表可以修改,所以利用索引可以修改 user_list[1] = "马冬梅" print(user_list) # ["李柔","马冬梅","卢慧","孟东珏","陈清","李阳金","马其坤","刘东"] # 删除 del user_list[5] print(user_list) # ["李柔","周雪梅","卢慧","孟东珏","陈清",马其坤","刘东"]
-
切片
user_list = ["李柔","周雪梅","卢慧","孟东珏","陈清","李阳金","马其坤","刘东"] # 读取一部分 user_list[0:4] # ["李柔","周雪梅","卢慧","孟东珏"] user_list[0:-1] # ["李柔","周雪梅","卢慧","孟东珏","陈清","李阳金","马其坤"] user_list[2:] # ["卢慧","孟东珏","陈清","李阳金","马其坤","刘东"] user_list[:] # ["李柔","周雪梅","卢慧","孟东珏","陈清","李阳金","马其坤","刘东"] # 修改一部分 user_list = ["李柔", "周雪梅", "卢慧", "孟东珏", "陈清", "李阳金", "马其坤", "刘东"] user_list[0:2] = [11, 22, 33, 44]//二换四 # [11, 22, 33, 44, '卢慧', '孟东珏', '陈清', '李阳金', '马其坤', '刘东'] print(user_list) # 删除 user_list = ["李柔", "周雪梅", "卢慧", "孟东珏", "陈清", "李阳金", "马其坤", "刘东"] del user_list[2:4] # ['李柔', '周雪梅', '陈清', '李阳金', '马其坤', '刘东'] print(user_list)
-
for循环
user_list = ["李柔","周雪梅","卢慧","孟东珏","陈清","李阳金","马其坤","刘东"] for item in user_list: print(item)
user_list = ["李柔","周雪梅","卢慧","孟东珏","陈清","李阳金","马其坤","刘东"] for i in range(len(user_list)): print(i) print( user_list[i] )
user_list = ["李柔", "周雪梅", "卢慧", "孟东珏", "陈清", "李阳金", "马其坤", "刘东"] for i in range(len(user_list)): data = "{}-{}".format(i, user_list[i]) print(data)
3.4 嵌套
列表是一个 ”容器“,容器中可以放很多东西。
data_list = [11,22,"武沛齐",["中国联通","中国移动"],666, True]
data_list = [
"梁吉宁",
"赵建先",
'root',
[999,888,777,666],
'admin',
666,
["周杰伦","刘欢","林俊杰","王一博"],
["刘翔","周琦",["姚明","王治郅","巴蒂尔"],"赵继伟"],
]
res = data_list[2].upper()//生成新的值赋给res
print(data_list) # 中的root是小写的。
print(res) # ROOT
# 取值
data_list[1] "赵建先"
data_list[1][-1] "先"
data_list[-1][2][-2] "王治郅"
# 操作
data_list[0] = "李柔"
data_list[3][-1] = "666"
data_list[4][0] = "A" # 报错? admin-> Admin//报错,字符串无法修改
print(data_list)
# 操作
data_list.append(123)
data_list[-1].append("大侄子")//不会报错,把元素加在"赵继伟"后面
data_list[-1][2].append("大侄子")//"巴蒂尔"后面
# 列表是一个可变类型,列表中的常见功能是对列表本身进行操作。
4.元组
列表,是一个有序且可变的容器,元素可以是多种不同的数据类型。
元组,是一个有序且不可变的容器,元素可以是多种不同的数据类型。
data = []
data.append(11)
data.append(234)
# 定义了一个元组,元组中有三个元素。不能删,不能改,不能添加
data = (11,22,33)
4.1 定义
v1 = (11,22,33)
v2 = (11,22,True,"武沛齐")
v3 = (11,22,True,(55,66), "武沛齐",[11,22,33,44])
元组的个数不能修改;元组的元素也不能被替换成其他的值。
注意:元组中的易错点。
v1 = (11,22) # 正确,元组
v2 = (33,44,) # 正确,元组,逗号可有可无
v3 = (666) # v3 = 666
v4 = (666,) # v4 = 元组,只有一个元素666
如果元组中只有一个元素,如果尾部没有逗号,则他不是元组,而是去除括号后的那个值。
1. 比较一下三个值的区别:
v1 = (1)
v2 = 1
v3 = (1,)
2.比较一下三个值的区别:
v1 = ( (1),(2),(3) )
v2 = ( 1, 2, 3 )
v3 = ( (1,), (2,), (3,) )
4.2 独有功能
无
4.3 公共功能
-
长度
v1 = (11,22,True,"武沛齐") res = len(v1) print(res) # 4
-
索引(只能读取)
v1 = (11,22,True,"武沛齐") v1[0] v1[2] v1[-1]
-
切片//一点是拷贝了一份新的值
v1 = (11,22,True,"武沛齐") v2 = v1[1:3] print(v2) # (22,True) v3 = v1[1:] print(v3) # (22,True,"武沛齐")
-
for循环
v1 = (11,22,True,"武沛齐") for item in v1: print(item)
v1 = (11,22,True,"武沛齐") for i in range(len(v1)): print(i) print( v1[i] )
4.4 嵌套
data = (
11,
22,
True,
("陆梅","吴国锋",[1,2,3,4])
"武沛齐",
["陈清","马其坤","李冉"]
)
data[-2] # ""武沛齐""
data[-3][0] # "陆梅"
data[-3][-1][0] # 1
# 元组的元素不可以被替换,元素个数也不允许修改。
data[0] = 123 # 报错
data[-1] = 666 # 报错
data[-1][0] = "张电摩" # 正确,整体未被替换
5.文件操作
5.1 字典(dict)
字典为一个无序,键不重复且元素只能是键值对的可变容器
info = {"k1":123,"k2":999 }
5.2 键值对
键不能重复,重复数据会被覆盖
info = {"k1":123,"k1":999 }
print(k1)//999
键必须要可哈希类型
//可哈希:int,bool,str,tuple
//不可哈希:列表,字典
v1 = 数据类型
a = hash(v1)
print(a)//可哈希就不会报错
5.3 容器
默认无序(python3.6之后就有序了)
5.3.1 定义
info = {"k1":123,"k2":999 }
info = {
"k1":123,
"k2":999,
"a1":True,
"a2":["1","2"]
}
5.3.2 独有功能
- 获取值
info = {
"k1":123,
"k2":999,
"a1":True,
"a2":["1","2"]
}
a = info.get("k1")
print(a)//123
若键不存在,则返回一个空(None)
a = info.get("k1","xxx")//当键"k1"不存在时,a为xxx,键存在则a为值
info = {
"k1":123,
"k2":999,
"a1":True,
"a2":["1","2"]
}
user = input("请输入用户名")
pwd = input("请输入密码:")
a = info.get(user)
if a == None:
print("用户不存在")
- 键(获取所有键)
info = {
"k1":123,
"k2":999,
"a1":True,
"a2":["1","2"]
}
a = info.keys()//高仿列表
res = list(a)//高仿列表转化成python列表
print(a)//dict_keys(['k1','k2','a1','a2'])
for i in info.keys():
print(i)//循环输出
- 值
info = {
"k1":123,
"k2":999,
"a1":True,
"a2":["1","2"]
}
a = info.values()//高仿列表获取其值
print(a)//dict_values([123,999,True,["1","2" ]])
for i in info.valuess():
print(i)//循环输出
- 键值
items获取所有的键值
info.items()
for i in info.items():
print(i)//循环输出("k1":123)
for i,j in info.items()://元素自动解包传给i和j
print(i,j)//循环输出("k1":123)
a,b = [11,22]//自动解包,a11,b22
a,b = (11,22)//自动解包,a11,b22
5.3.3 公共功能
- 长度,有多少键值对
info = {
"k1":123,
"k2":999,
"a1":True,
"a2":["1","2"]
}
data = len(info)
- 索引取值
索引为键,通过键取值
info = {
"k1":123,
"k2":999,
"a1":True,
"a2":["1","2"]
}
//读取值
data = info["name"]
写一个不存在的键索引是会报错的
info.get(键)//键不存在则不报错,返回None
//新增和修改值
info["k1"] = 100//键不存在则新增
//删除(删除不存在则会报错)
del info[键]
//判断键是否存在再删除
if 键 in info:
pass
- for
键//获取所有键
info = {
"k1":123,
"k2":999,
"a1":True,
"a2":["1","2"]
}
a = info.keys()//高仿列表
res = list(a)//高仿列表转化成python列表
print(a)//dict_keys(['k1','k2','a1','a2'])
for i in info.keys():
print(i)//循环输出
值
info = {
"k1":123,
"k2":999,
"a1":True,
"a2":["1","2"]
}
a = info.values()//高仿列表获取其值
print(a)//dict_values([123,999,True,["1","2" ]])
for i in info.valuess():
print(i)//循环输出
键值
items获取所有的键值
info.items()
for i in info.items():
print(i)//循环输出("k1":123)
for i,j in info.items()://元素自动解包传给i和j
print(i,j)//循环输出("k1":123)
a,b = [11,22]//自动解包,a11,b22
a,b = (11,22)//自动解包,a11,b22
- 补充
内部嵌套,字典可以套列表,可以互相嵌套,因为他们是容器:元组,列表,字典(键是可哈希)
(查询索引速度快)不可哈希:字典和列表
6.集合(set)
集合是一个无序,可变,元素必须是可哈希且不重复的容器。
6.1定义
v1 = {11,22,33,44}
无序—无索引切片操作
可变:v1.add(11)
不重复:添加相同元素其值不变
元素必须可哈希:不可哈希有列表,字典,集合
不希望重复的数据的集合可以用集合
定义空值:
空列表
v1 = []
v2 = list()
空元组
v1 = ()
v2 = tuple()
空字典
v1 = {}
v2 = dict{}
空集合
v1 = set()
独有功能
1.添加元素
v1 = {11,22}
v1.add{33}
v1.add{"xqs"}
print(v1)
2.删除元素
v1.discard(11)
删除元素不存在则无操作
3.交集
v1 = {11,111,23,44}
v2 = {11,09,878,55,44}
res = v1.intersection(v2)//会生成一个新集合//或者 res = v1 & v2
res//{11,44}
4.并集
res = v1.union(v2)// v1 | v2
5.差集
res = v1.difference(v2)//v1有v2没有//res = v1 - v2
公共
1.长度
v1 = {11,22,33}
data = len(v1)//3
2.for
v1 = {11,22,33}
for i in v1:
print(i)//顺序不固定
3.in (效率高)
v1 = {11,22,33}
if 11 in v1:
print("在")
容器之间的转换:
list tuple set#转换原则为用英文名字包裹一下
list = []
a = tuple(list)//列表变元组
元组或列表转换成集合时会自动去重
None类型表示空值
v1 = None//节省内存
布尔类型
True/False
以下为False的是0,“”,[],(),{},set(),None —>False,其他均为True
浮点型(float)
小数,有时会不太精确
v1 = 2.9
精确时要用decimal模块
import decimal
v1 = decimal.Decimal("0.1")
v2 = decimal.Decimal("0.1")
v3 = v1 + v2
字节类型(bytes)
name = "xqs"//str为字符串,底层是unicode编码
data = name.encode("utf-8")//字符串转换成字节
print(data)//b'\xxx\xxx\xxx \xxx\xxx\xxx \xxx\xxx\xxx'//三个字节一个汉字
data = name.encode("gbk")b'\xxx\xxx\xxx\xxx\xxx\xxx'两个字节
//字节转换成字符串
name = “str”
7.文件操作
只能普通的文本文件
三个基本步骤!
1.打开
2.操作
3.关闭
1.快速读写
1.打开文件
open("文件路径",模式)
a = open("1.txt",mode = "wb")//写文件的模式,变量代指打开的文件
2.写内容
name = "str\n"//unicode,加\n则自动换行
a.write(name.enicode("utf-8"))//以utf-8的形式写
3.关闭文件
a.close()
wb模式:文件不存在则创建文件,文件存在则清空文件
循环输入
a = open("1.txt",mode = "wb")
while True:
if a:
break
name = "str\n"//unicode,加\n则自动换行
a.write(name.enicode("utf-8"))//以utf-8的形式写
a.close()
2.追加文件
mode = ‘ab’//写在文件尾部
3.读取内容
mode = ‘rb’
#读取文件内容
data = a.read()//字节形式
data.decode('utf-8')
b = data_string.split("\n")通过\n来切割字符串
b = data_string.strip().split("\n")通过\n来切割字符串
读取大文件逐行读
a.readline()
for line in a:
line_string = line.decode('utf-8')
line_string = line_string.strip()
with上下文//忘记关闭文件
//打开文件并让这个文件等于变量file_object
with open("xxx.txt",mode = 'rb') as file_object :
//在缩进里写代码,离开缩进时自动关闭文件
打开文件模式
-
w b,写
a = open("xxx.txt",mode = "wb") a.write("xqs".enicode("utf-8")) a.close()
-
w,写
a = open("1.txt",mode = "w",encoding = "utf-8") a.write("xqs") a.close()
-
ab,追加
a = open("xxx.txt",mode = "ab") a.write("xqs".enicode("utf-8")) a.close()
-
a,追
a = open("xxx.txt",mode = "a",encoding = "utf-8") a.write("xqs") a.close()
-
r b,读
a = open("xxx.txt",mode = "rb") //读到压缩后的utf-8编码 b.read()//读所有 for line in a://读行 pass data = b.decode('utf-8')//解压,utf-8-->unicode a.close()
-
r,读
a = open("xxx.txt",mode = "r",encodind = "utf-8") b.read()//读所有,直接读取到字符串 a.close()