zoukankan      html  css  js  c++  java
  • python基础之数据类型补充(基础五)

    第七章 python基础之数据类型补充(基础五)

    7.1 数据类型补充

    字符串str,整型int,列表list,元组tuple,字典dict。

    7.1.1 字符串str类型补充

    s1 = str(123)					#类型字符串
    

    s.capitalize() 首字母大写

    s = "alex wusir"
    s1 = s.capitalize()			#首字母大写:Alex wusir
    print(s1)
    

    s.title() 每个单词首字母大写

    s = "alex wusir"
    s1 = s.title()			#每个单词前面首写字母大写:Alex Wusir
    print(s1)
    

    s.count() 统计出现的次数

    s = "alex awusair"
    print(s.count("a"))		#3次
    

    s.find() 字符串的查找

    s = "alex taibai"
    print(s.find("e"))		#dind 查找出对应的索引值
    print(s.find("c"))     # find 查找不到的时候返回 -1
    print(s.index("C"))    # index 查找不到就报错
    

    查找所有a的索引(下标):

    s = "alex taibai"
    for i in range(len(s)):			#range范围是s字符串的长度
        if s[i] == 'a':
            print(i)
    

    7.1.2列表list类型补充:

    li = list("815678234")   # 定义的方式
    print(li)
    ['8', '1', '5', '6', '7', '8', '2', '3', '4']
    

    count() 统计

    li = list("815678234")
    print(li.count("1"))			#统计1出现1次
    

    index() 查看

    print(li.index("4"))			#查看"4"的索引值为8
    print(li)
    

    li.reverse() 反正

    li.reverse()			#['4', '3', '2', '8', '7', '6', '5', '1', '8']
    print(li)
    

    li.sort() 排序

    li.sort()  			# 升序:['1', '2', '3', '4', '5', '6', '7', '8', '8']
    li.sort(reverse=True)  # 降序:['8', '8', '7', '6', '5', '4', '3', '2', '1']
    print(li)
    

    7.1.3元组tuplel类型的补充

    tu = tuple("12345")
    print(tu)
    ('1', '2', '3', '4', '5')
    

    count() 统计

    tu = ('1', '2', '3', '4', '5')
    print(tu.count("3"))			#统计"3"出现的次数
    

    index() 查找

    print(tu.index("4"))			#4对应的索引值为3
    3
    

    7.1.4 字典dict类型的补充

    dic = dict(k=1,k1=123,k2="aa",k3=222,k4=1123123)   # 定义方式
    print(dic)
    {'k': 1, 'k1': 123, 'k2': 'aa', 'k3': 222, 'k4': 1123123}
    

    dic.popitem() # 随机删除字典中的某个键值对,将删除的键值对以元祖的形式返回

    dic = {'k': 1, 'k1': 123, 'k2': 'aa', 'k3': 222, 'k4': 1123123}
    dic2 = dic.popitem() #随机删除返回删除内容('k4', 1123123)
    print(dic)
    ('k4', 1123123)
    {'k': 1, 'k1': 123, 'k2': 'aa', 'k3': 222}
    

    python3.6版本 默认删除最后个键值对

    dict.fromkeys() 批量创建字典

    dic = {}
    dic1 = dict.fromkeys("abcdef",[4,5,6]) 
    # 第一个参数可迭代对象
    # 第二个参数是每个键对应的值 -- 用的都是同一个内存地址
    print(dic1)
    {'a': [4, 5, 6], 'b': [4, 5, 6], 'c': [4, 5, 6], 'd': [4, 5, 6], 'e': [4, 5, 6], 'f': [4, 5, 6]}
    dic1["a"].remove(5)
    print(dic1)
    {'a': [4, 6], 'b': [4, 6], 'c': [4, 6], 'd': [4, 6], 'e': [4, 6], 'f': [4, 6]}
    

    7.1.5 集合set补充类型

    s = set("1234")   # 定义方式
    print(s)
    {'2', '1', '3', '4'}
    

    7.2 数据类型的转换

    字符串str===>整数int 字符串中必须是十进制的数,才能进行转换。

    s = "abc"
    n = int(s)
    print(n,type(n))#报错  n = int(s)  ValueError: invalid literal for int() with base 10: 'abc'
    
    s = "123"			#必须是十进制的数
    n = int(s)
    print(n,type(n))
    123 <class 'int'>
    

    整数int===>字符串str

    n = 123
    s = str(n)
    print(s,type(s))
    

    字符串str==>列表list

    s = "123"
    li = list(s)
    print(li)
    ['1', '2', '3']
    
    s = "123"
    print(s.split())	#把字符串转化成列表:['123']
    print(''.join(li))	# 把列表转换成字符串:123
    

    列表list==>字符串str

    li = ["12","3"]
    s = str(li)				#把列转成字符串['12', '3'] <class 'str'>
    print(s,type(s))
    print(s)
    print(''.join(li))		#用join把列转换成字符串 不能有数字,变成123
    123
    

    列表list==>元组tuple

    li = [1,2,3]
    tu = tuple(li)
    print(tu)
    

    元组tuple==>列表list

    tu = (1,2,3)
    li = list(tu)
    print(li)
    

    集合set==>列表list

    s = {12,3,4}
    print(list(s))
    

    列表list==>集合set

    li = [1,2,3]
    s = set(li)
    print(s)
    

    数据类型转换的总结:

    字符串 -- 数字:字符串中必须都是十进制的数字
    数字 -- 字符串:直接转换
    列表 -- 字符串:''.join() -- 可迭代的对象中不能出现数字
    字符串 -- 列表:split
    除字典外,容器数据类型之间可以直接相互转换

    数据类型有序无序的总结:

    有序:		str,int,bool,list,tuple
    无序:		dict,set
    可变:		 list,dict,set
    不可变:	str,int,bool,tuple
    

    数据类型的访问方式:
    直接访问: int,bool,set
    顺序访问: list,tuple,str
    通过键访问: dict

    7.2 常见的问题

    7.2.1 对列表li里面索引值是奇数的删除

    li = [1,2,3,4,5] #对应的索引值:0,1,2,3,4

    试题:

    li = [1,2,3,4,5] #[1,3,4,5]

    索引值是奇数的删除

    for i in range(4):
    if i % 2 == 1:
    li.pop(i) # 结果不对
    print(li) #结果[1,3,4] for循环执行到最后一个索引3时会

    对列表里索引值是奇数的删除方法:

    1.1倒序删除

    li = [1,2,3,4,5]
    for i in range(len(li)-1,-1,-1):
        if i % 2 == 1:
            li.pop(i)   # 倒序删除
    print(li)
    

    1.2 偷换概念删除

    偷换感念
    li = [1,2,3,4,5]
    new_li = []#要删的值
    for i in range(len(li)):
        if i % 2 == 1:
            new_li.append(li[i])	#通过索引值取到元素
    for em in new_li:
        li.remove(em)  			   #拿到计数的索引值要删除的值
    print(li)
    
    
    
    ###方法
    li = [1,2,3,4,5]
    for i in range(len(li)-1,-1,-1):
        if i % 2 == 1:
            del li[i]   # 倒序删除
    print(li)
    
    ###方法
    li = [1,2,3,4,5]
    del li[1::2]
    print(li)
    
    使用for删除列表的时候从左向右删除,会报错.结果不对
    
    

    dic = {"k1":"v1","k2":"v2"}
    for i in dic:
    dic["k3"] = "v3"
    print(dic)

    面试题:
    li = [1,2,3,4]
    for i in li:
    li.append(i)
    print(li)

    字典常见的错误:

    不能在遍历字典本身中改变大小,要批量删除字典的键值对。

    题目:循环字典dic中添加一对键值:"k3":v3

    dic = {"k1":"v1","k2":"v2","k3":"v3"}
    for i in dic:
        dic["k7"] = "1"
    print(dic)     #报错:RuntimeError: dictionary changed size during iteration
    

    通过循环取值添加到新的列表内进行删除。

    dic = {"k1":"v1","k2":"v2","k3":"v3"}
    li = []
    for i in dic:
        if i == "k1" or i == "k3":
            li.append(i)
    for em in li:
        dic.pop(em)
    print(dic)
    

    7.3编码进阶

    ascii 不支持中文
    gbk 国标 中文2 英文1
    unicode 万国码 英文2 中文4
    utf-8 英文1 欧洲2 亚洲3

    7.3.1 解码,编码

    中文转成字节,先编码,解码后编码

    s = "今天晚上,吃鸡!"
    s1 = s.encode("gbk")  # 中文转换成字节  -- 编码
    s1 = s.encode("utf-8")  # 中文转换成字节  -- 编码
    b'xbdxf1xccxecxcdxedxc9xcf,xb3xd4xbcxa6!'
    print(s1.decode("utf-8"))  #字节转换成字符串 -- 解码
    
    s = "你好"
    s1 = s.encode("utf-8")  # 字节
    print(s1)  # 6个字节
    print(s1.decode("gbk"))  # 3个字
    

    python3内存使用的就是unicode
    python2内存使用的就是ascii

  • 相关阅读:
    Python基础语法—8小时入门版
    PXE服务搭建及配置
    jenkins pipeline
    Bugzilla的安装和部署
    KVM安装、配置及使用说明
    UOS虚拟显示器&VNC配置
    Sikuli-基于图像识别的自动化测试框架
    UOS(国产Linux操作系统)下使用pytest生成allure自动化测试报告
    dogtail的使用方法(二)——元素操作
    dogtail的使用方法(三)——启动应用
  • 原文地址:https://www.cnblogs.com/yueling314/p/11041930.html
Copyright © 2011-2022 走看看