zoukankan      html  css  js  c++  java
  • 基础数据类型补充以及二次编码

    基础数据类型补充以及二次编码

    一.基础数据类型补充

    1.字符串(str)

    • 首字母大写
    # .capitalize()
    name = "meet"
    s = name.capitalize()
    print(s)     #Meet
    
    • 每个单词首字母大写
    # .title()
    name = "meet alex"
    s = name.title()
    print(s)    #Meet Alex
    
    • 大小写反转
    # .swapcase()
    name = "MeeT"
    s = name.swapcase()
    print(s)    #mEEt
    
    • 居中--填充
    # .center()
    name = "meet"
    s = name.center(10,"*")
    print(s)    #***meet***
    
    • 查找(从左向右,之查找一个)
    # .find()   .index()
    name = "meet"
    s = name.find("e")
    print(s)     #1       #find查找不存在的就返回-1
    
    s = name.index("t")
    print(s)     #3       #index查找不存在的就报错
    
    • 拼接
    # .join()
    name = ["meet","alex"]
    s = "_".join(name)        #拼接符.join(可迭代对象)
    print(s)     #meet_alex   
    
    • 格式化
    1.%s
    2.f
    3.name.format()
      按照索引位置进行填充
        name = "alex{},{}"
        print(name.format(1,2))    # alex1,2
      按照索引值进行填充
        name = "alex{1},{0}"
        print(name.format("a","b"))  #alexb,a
      按照关键字进行填充
        name = "alex{a},{b}"
        print(name.format(a=1,b=2))  #alex1,2
    
    

    2.列表

    定义方式 list(可迭代对象) + * 元素都是共用的

    • 排序(默认升序)
    # lst.sort()
    lst = [1,5,3,2,4]
    lst.sort()
    print(lst)    #[1, 2, 3, 4, 5]
    
    
    • 降序
    # lst.sort(reverse=True)
    lst = [1,2,3,4,5]
    lst.sort(reverse=True)
    print(lst)   #[5, 4, 3, 2, 1]
    
    • 反转
    # lst.reverse()
    lst = [1,2,3,4,5]
    lst.reverse()
    print(lst)       #[5,4,3,2,1]
    print(lst::-1)   #[5,4,3,2,1]
    
    • 面试题
    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]]
    
    合并列表
    方式一:
    lst = [1,2,3]
    lst1 = [4,5,6]
    lst.extend(lst1)
    print(lst)       #[1,2,3,4,5,6]
    方式二:
    lst = [1,2,3]
    lst1 = [4,5,6]
    print(lst + lst1) #[1,2,3,4,5,6]
    
    

    3.元组

    tu = ("1")    ()中的数据类型是数据本身
    tu = (1,)     --元组
    
    元组可以 + *   不可变的共用,可变的也共用
    

    4.字典

    定义一个字典: dict(k = 1,k1 = 2)

    # 随机删除
    dic.popitem()   
    print(dic.popitem())    --返回的是被删除的键值对
    
    # 批量添加键值对   键是可迭代对象,值是共用的
    dict.fromkeys()
    
    dic = {}
    dic.fromkeys("123",[23]) 
    print(dic)     # {}
    
    dic = {}
    print(dic.fromkeys("123",[23]))  
                  #{'1': [23], '2': [23], '3': [23]}
    
    
    
    

    5.集合

    空集合--  set()     
    空字典--{}
    
    定义集合:    set("alex")  #{'a', 'e', 'l', 'x'}  迭代添加的
    

    6.布尔值

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

    二.数据类型之间的转换

    # 元组转列表(tuple --> list)
      list(tuple)
    
    # 列表转元组(list --> tuple)
      tuple(list)
    
    #字符串转列表(str --> list)
       s = "abc"
       s1 = s.split(" ")
       print(s1)    #['abc']
        
    #列表转字符串(list --> str)
       s = ["abc"]
       print("".join(s))  #abc
    
    #字典转字符串(dict --> str)
      dic = {"a":1,"b":2}
      print(str(dic))    #{'a': 1, 'b': 2}
       
    #集合转列表(set --> list)
      set = {"a",1}
      print(list(set))   #[1, 'a']
    
    #列表转集合(list --> set)
      lst = [1,2,3]
      print(set(lst))   #{1,2,3}
    
    
    
    python数据类型
    
    可变:list,dict,set
        
    不可变:int,bool,str,tuple
     
    有序:list,tuple,str,int,bool
    
    无序:dict,set
    
    取值方式:
    索引取值:str,list,tuple
    直接取值:set,int,bool
    用键取值:dict
    

    三.会遇到的坑

    #列表删除:从后向前删除
    #        创建一个新的列表,删除旧的列表
    
    #字典删除:循环的时候不能改变源数据的大小(可以改变值)
    #       创建一个新的字典,删除旧的字典
    
    #集合删除:循环的时候不能改变源数据的大小
    
    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]
    for i in range(len(lst)):
        lst.pop()
    print(lst)          #[]
    
    lst = [1,2,3,4]
    for i in range(len(lst)-1,-1,-1)
        del lst[i]
    print(lst)          #[]
    
    lst = [1,2,3,4]
    for i in range(len(lst)):
        del lst[-1]
    print(lst)         #[]
    
    lst = [1,2,3,4]
    lst1 = lst.copy()
    for i in lst1:
        lst.remove(i)
    print(lst)         #[]
    
    
    删除字典的坑:       #字典的迭代会改变原来的大小(不能加不能删)
    dic = dict.fromkeys("12345",1)  
    for i in dic:
        dic[i] = "123"
    print(dic)    
           #{'1': '123', '2': '123', '3': '123', '4': '123', '5': '123'}
        
    dic = dict.fromkeys("12345",1)
    dic1 =dic.copy()
    for i in dic1:
        dic.pop(i)
    print(dic)        #{}
    
    #集合和字典都是迭代的时候不能改变原来的大小
    

    四.二次编码

    ascii --没有中文

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

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

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

    encode()  --编码    decode() --解码
    
    name = "你好啊"
    s1 = name.encode("utf-8")   # 编码  
    s2 = s1.decode("utf-8")     #解码
    print(s2)
    s2 = name.encode("gbk")     # 编码      
    print(s2.encode("gbk"))     #解码
    
    # 以什么编码集(密码本)进行编码就要用什么编码集(密码本)解码
    
  • 相关阅读:
    UVA
    codevs3196 黄金宝藏
    UVA
    UVA
    3424:Candies(差分约束,Dijkstra)(配对堆优化
    1062:昂贵的聘礼(最短路/枚举)
    01分数规划问题(二分法与Dinkelbach算法)
    Desert King(01分数规划问题)(最优斜率生成树)
    Enlarge GCD(素数筛)
    hdu2085-2086
  • 原文地址:https://www.cnblogs.com/tutougold/p/11178657.html
Copyright © 2011-2022 走看看