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"))
    

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

  • 相关阅读:
    Dot Net WinForm 控件开发 (七) 为属性提下拉式属性编辑器
    WinForm 程序的界面多语言切换
    c#遍历HashTable
    Dot Net WinForm 控件开发 (三) 自定义类型的属性需要自定义类型转换器
    Dot Net WinForm 控件开发 (六) 为属性提供弹出式编辑对话框
    Dot Net WinForm 控件开发 (一) 写一个最简单的控件
    Dot Net WinForm 控件开发 (四) 设置属性的默认值
    Dot Net WinForm 控件开发 (二) 给控件来点描述信息
    Dot Net WinForm 控件开发 (八) 调试控件的设计时行为
    Dot Net WinForm 控件开发 (五) 复杂属性的子属性
  • 原文地址:https://www.cnblogs.com/beichen123/p/11189386.html
Copyright © 2011-2022 走看看