zoukankan      html  css  js  c++  java
  • 基础数据类型补充 以后会遇见的坑 二次编码

    1.基础数据类型补充

    str:

    不可变数据

    1.首字母大写:

    name = "alex"
    name1 = name.capitalize()
    print(name1)
    

    2.每个单词首字母大写:

    name = "alex wusir"
    print(name.title())
    

    3.大小写反转

    name = "Alex"
    print(name.swapcase())
    

    4.居中 -- 填充

    name = "alex"
    print(name.center(20,"-"))
    

    5.查找

    从左向右 只查找一个
    name = "alelx"
    print(name.find("b"))  #find查找不存在的返回-1 存在返回"0"
    print(name.index("b")) #index查找不存在的就报错,,存在的返回索引值
    

    6.拼接 ***

    name = "al3x"
    print("_".join(name))  
    

    7.格式化

    ① %s
    ② f''
    ③ name.format()
    name = "alex{},{},{}"
    print(name.format(1,2,3)) # 按照顺序位置进行填充
    name = "alex{2},{0},{1}"
    print(name.format("a","b","c")) # 按照索引值进行填充
    name = "alex{a},{b},{c}"
    print(name.format(a=1,c=11,b=67)) # 按照关键字进行填充
    

    8.字符串的 加 和 乘

    开辟新的内存空间
    name = "alex"
    name1 = "wusir"
    print(name)
    print(name1)
    print(name + name1)
    

    list

    1.定义方式

    list("123")
    

    2.其他方法

    2.1 排序 (默认升序)
    lst = [1,2,23,234,435,36,23,213421,421,4231,534,65]
    lst.sort()  
    print(lst)
    
    lst = ["你好","我好"]
    lst.sort()  
    print(lst)
    
    2.2 反转
    lst = [1,2,3,4453,5,6,7]
    print(lst[::-1])
    lst.reverse()    
    print(lst)
    
    lst = [1,2,3,4,5123,21345,231123,4,1235,234,123]
    lst.sort()
    lst.reverse()
    print(lst)
    
    面试题:
    拼接两个列表
    方式一:
    lst.extend(lst1)
    print(lst)
    方式二:
    print(lst+lst1)
    
    正题
    lst = [1,2,3,4,5]
    lst1=  lst * 5
    new_lst = lst * 5
    print(new_lst[0] is new_lst[-5])        # True
    
    扩展
    lst = [[]]
    new_lst = lst * 5
    new_lst[0].append(10)
    print(new_lst)
    # [[10], [10], [10], [10], [10]]
    
    lst = [1,[]]
    new_lst = lst * 5
    new_lst[0] = 10
    print(new_lst)
    # [10, [], 1, [], 1, [], 1, [], 1, []]
    
    lst = [1,[]]
    new_lst = lst * 5
    new_lst[1] = 10
    print(new_lst)
    # [1, 10, 1, [], 1, [], 1, [], 1, []]
    
    lst = [[]]
    new_lst = lst * 5
    new_lst[0].append(10)
    print(new_lst)
    # [[10], [10], [10], [10], [10]]
    

    tuple

    tu = ("12")      # 数据类型是( )中数据本身
    print(type(tu))
    # <class 'str'>
    
    tu = (1,)        # (1,) 是元组
    print(type(tu))  
    # <class 'tuple'>
    
    元组 加 乘 不可变共用,可变也共用
    

    dict

    定义一个字典:

    print(dict(k = 1,k = 2))
    

    随机删除:

    dic = {"key":1,"key2":2,"key3":56}
    print(dic.popitem())         # 返回的是被删除的键值对(键,值)
    print(dic)
    # python3.6 默认删除最后一个(bug)
    

    批量添加:

    dic = {}
    dic.fromkeys("123",[23]) 
    # 批量添加键值对{"1":[23],"2":[23],"3":[23]}
    print(dic)
    
    dic = dict.fromkeys("123456789",1) 
    # 批量添加键值对"键是可迭代对象",值 -- 会被共用
    dic["1"] = 18
    print(dic)
    

    set

    set() -- 空集合
    
    {} -- 空字典
    
    定义集合:set("alex")  # 迭代添加的
    

    bool

    True   False
    数字: 0
    字符串: ""
    列表:[]
    元组:()
    字典:{}
    集合: set()
    其他: None
    

    数据类型之间转换

    list  tuple
    tuple list
    
    str转 list的方法:
    name = "alex"  
    print(name.split())
    
    list转 str的方法:
    lst = ["1","2","3"] 
    print(''.join(lst))
    
    set - list
    list - set
    

    python的数据类型

    可变:
    list ,dict ,set
    不可变:
    int bool str tuple
    有序:
    list,tuple,str,int,bool
    无序:
    dict,set
    取值方式:
    索引: str list tuple
    直接: set ,int ,bool
      键: dict
    

    2.以后会遇见的坑

    for的死循环

    lst = [1,2]
    for i in lst:
        lst.append(3)
    print(lst)
    # 打印不出内容
    

    删除列表的坑

    lst = [1,2,3,4]
    for i in lst:
        lst.pop()
    print(lst)
    # [1, 2]
    
    lst = [1,2,3,4]
    for i in lst:
        lst.pop(0)
    print(lst)
    # [3, 4]
    
    lst = [1,2,3,4]
    for i in lst:
        lst.remove(i)
    print(lst)
    # [2, 4]
    

    成功删除的方式:

    lst = [1,2,3,4,5]
    for i in range(len(lst)):
        lst.pop()
    print(lst)
    
    lst = [1,2,3,4,5]
    for i in range(len(lst)-1,-1,-1):
        del lst[i]
    print(lst)
    
    lst = [1,2,3,4,5]
    for i in range(len(lst)):
        del lst[-1]
    print(lst)
    
    lst = [1,2,3,4,5]
    lst1 = lst.copy()
    for i in lst1:
        lst.remove(i)
    print(lst)
    

    删除字典的坑

    dic = dict.fromkeys("12345",1)
    for i in dic:
        dic.pop(i)
    print(dic)
    # 报错
    # 字典的迭代的时候改变了原来的大小(不能加不能删)
    

    正确删除的方式

    dic = dict.fromkeys("12345",1)
    dic1 = dic.copy()
    for i in dic1:
        dic.pop(i)
    print(dic)
    # {}
    
    # 集合和字典都是迭代的时候不能改变原来的大小
    

    3.二次编码

    密码本:

    ascii -- 没有中文

    gbk -- 英文 8b(位) 1B(字节) 中文 16b 2B

    unicode -- 英文16b 2B 中文32b 4B

    utf-8 -- 英文8b 1B 欧洲16b 2B 亚洲24b 3B

    name = "你好啊"
    
    s1 = name.encode("utf-8") # 编码 
    
    s2 = name.encode("gbk") # 编码 
    
    s2 = s1.decode("utf-8") # 解码
    
    print(s2.encode("gbk"))
    

    以什么编码集(密码本)进行编码就要用什么编码集(密码本)解码

  • 相关阅读:
    javaScript
    alsa驱动分析(1)
    Android 音频系统[相当好zz]
    verilog语法学习心得[zz]
    Linux ALSA声卡驱动之二:声卡的创建[zz]
    关于手机线控耳机那点事儿!![zz]
    armlinux备忘
    聊聊Android的音频架构[zz]
    片上系统(SOC)设计流程及其集成开发环境[zz]
    记录中心设置
  • 原文地址:https://www.cnblogs.com/beichen123/p/11189386.html
Copyright © 2011-2022 走看看