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()值为TrueFalse
    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 独有功能

  1. 大写a.upper()

  2. 小写a.lower()

  3. 是否是数字a.isdecimal

  4. 替换a.replace(“1”,“2”)

  5. 去除空白/左边/右边a.stript().lstript().rstript()

  6. 切割

    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]
    
  7. 拼接

    # 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去拼接,列表中必须都是字符串。

  8. 字符串转换成字节类型

    字符串		 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) # "中国联通"
    
  9. 长度的补足

    name = "张三"
    
    text = name.center(13,"*")//居中,总长度为13
    print(text) # "*****宁摆场*****"
    
    name = "张三"
    
    text = name.ljust(13,"#")//原值放左边
    print(text) # "宁摆场##########"
    
    name = "张三"
    
    text = name.rjust(13,"#")//原值放右边
    print(text) # "##########宁摆场"
    
  10. 长度的补足,只能在左边补0(二进制字符串前面补0)

    name = "张三"
    
    v1 = name.zfill(10)//补足,总长度为10,,,,zfill
    print(v1) # "0000000张三"
    
    data = "10101"
    
    res = data.zfill(8)
    print(res) # "00010101"
    

2.3 公共功能

  1. 长度a = len(“str”)

    name = "张三"
    
    res = len(name)
    print(res) # 2
    
    v1 = len("张三yy8899")
    print(v2) # 8
    
  2. 索引

    #       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]  # "程"
    
  3. 切片//前取后不取,字符串无法改变,切片是原来字符串切出来拷贝一份

    #       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"
    
  4. 循环

    给你一个字符串 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 独有功能

  1. 追加

    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()
    
  2. 插入,把数据插入到那个位置。

    #              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)
    
  3. 删除(值删除)

    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)
    
  4. 删除(索引位置)

    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)
    
  5. 清空列表

    user_list = ["李柔","周雪梅","卢慧","孟东珏","陈清","李阳金","马其坤","刘东"]
    
    user_list.clear()//list.clear()
    
    print(user_list) # []
    
  6. 列表元素排序

    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 公共功能

  1. 长度//列表长度

    data_list = [11,22,33,44]
    
    res = len(data_list)
    print(res) # 4
    
  2. 索引

    #              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) #  ["李柔","周雪梅","卢慧","孟东珏","陈清",马其坤","刘东"]
    
  3. 切片

    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)
    
  4. 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 公共功能

  1. 长度

    v1 = (11,22,True,"武沛齐")
    
    res = len(v1)
    print(res) # 4
    
  2. 索引(只能读取)

    v1 = (11,22,True,"武沛齐")
    
    v1[0]
    v1[2]
    v1[-1]
    
  3. 切片//一点是拷贝了一份新的值

    v1 = (11,22,True,"武沛齐")
    
    v2 = v1[1:3] 
    print(v2) # (22,True)
    
    v3 = v1[1:] 
    print(v3) # (22,True,"武沛齐")
    
  4. 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 独有功能
  1. 获取值
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("用户不存在")
  1. 键(获取所有键)
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)//循环输出
  1. 键值

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 公共功能
  1. 长度,有多少键值对
info = {
    "k1":123,
    "k2":999"a1":True,
    "a2":["1","2"]
    }
data = len(info)
  1. 索引取值

索引为键,通过键取值

info = {
    "k1":123,
    "k2":999"a1":True,
    "a2":["1","2"]
    }

//读取值
data = info["name"]
写一个不存在的键索引是会报错的

info.get()//键不存在则不报错,返回None

//新增和修改值
info["k1"] = 100//键不存在则新增

//删除(删除不存在则会报错)
del info[]

//判断键是否存在再删除
ifin info:
    pass

  1. 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
  1. 补充
    内部嵌套,字典可以套列表,可以互相嵌套,因为他们是容器:元组,列表,字典(键是可哈希)
    (查询索引速度快)不可哈希:字典和列表

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 :
    //在缩进里写代码,离开缩进时自动关闭文件

打开文件模式

  1. w b,写

    a = open("xxx.txt",mode = "wb")
    a.write("xqs".enicode("utf-8"))
    a.close()
    
  2. w,写

    a = open("1.txt",mode = "w",encoding = "utf-8")
    a.write("xqs")
    a.close()
    
  3. ab,追加

    a = open("xxx.txt",mode = "ab")
    a.write("xqs".enicode("utf-8"))
    a.close()
    
  4. a,追

    a = open("xxx.txt",mode = "a",encoding = "utf-8")
    a.write("xqs")
    a.close()
    
  5. 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()
    
  6. r,读

    a = open("xxx.txt",mode = "r",encodind = "utf-8")
    b.read()//读所有,直接读取到字符串
    a.close()
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值