zoukankan      html  css  js  c++  java
  • python自动化开发-[第二天]-基础数据类型与编码(续)

    今日简介:

        - 编码

        - 进制转换

        - 初识对象

        - 基本的数据类型

          - 整数

          - 布尔值

          - 字符串

          - 列表

          - 元祖

          - 字典

          - 集合

        - range/enumcate

    一、编码

      encode和decode

      编码就是将字符串转换成字节码,涉及到字符串的内部表示。
      解码就是将字节码转换为字符串,将比特位显示成字符。

    file = '文本'
    file.decode(encoding="utf-8", errors="strict")
    file.encode(encoding="gbk", errors="strict")
    

      encoding为要编码的格式,errors是指的是错误的处理方案

    二、进制转换

      二进制:  1对应 00000001 3对应 00000011   最多支持2的8次幂

      八进制:    逢8进1位  1  2 3 4 5 6 7 10

      十进制       0 1 2 3 4 5 6 7 8 9 10

      十六进制    逢16进1位  1 2 3 4 5 6 7 8 9 A B C D E F

          各个进制的表示符号

      b:二进制,o:八进制,d:十进制,x:十六进制 

    #二进制
    >>> bin(10)
    '0b1010'
    #十进制转八进制
    >>> oct(123)
    '0o173'
    #十进制转十六进制
    >>> hex(10)
    '0xa'
    #十六进制转二进制
    
    #借助十进制
    >>> bin(int('fc',16))
    '0b11111100'
    #利用函数直接转
    >>> bin(0xa)
    '0b1010'
    >>> oct(0xa)
    '012'
    >>> hex(10)
    '0xa'
    

      

    三、初识对象 

     四、基本数据类型-整数

    #1. 当前整数的二进制表示,最少位数
    >>> age = 1
    >>> print (age.bit_length())
    1
    #2. 获取当前数据的字节表示
    >>> age = 22
    #将十进制用16进制展示,x16放最后
    >>> v = age.to_bytes(10,byteorder='big')
    >>> print (v)
    b'x00x00x00x00x00x00x00x00x00x16'
    #将十进制用16进制展示,x16放最前
    >>> v = age.to_bytes(10,byteorder='little')
    >>> print (v)
    b'x16x00x00x00x00x00x00x00x00x00'
    

    五、基本数据类型-布尔

    布尔值为False的情况
    >>> print (bool(0))
    False
    >>> print (bool())
    False
    >>> print (bool(""))
    False
    >>> print (bool([]))
    False

    六、基本数据类型-字符串

    1、capitalize 将字符串首字母变大写,自身不变会生成一个新的值

    例子:

    name = 'dragon'
    v = name.capitalize()
    print (v)
    #输出
        Dragon        
    

    2、将字符串大写变小写,比lower功能强大,casefold可以将所有语言大写变小写

    例子:

    name  = 'DragOn'
    v = name.casefold()
    print(v)
    #输出
        dragon
    

    3、center将字符串放中心,其余空白用*来替换,字符长度为50

    例子:

    name = 'dragon'
    v = name.center(50,'*')
    print(v)
    **********************dragon**********************
    

      

    4、count针对字符串里元素出现的次数做计数,支持索引范围

    例子:

    name = 'dragon'
    v = name.count('d')
    print (v)
    
    #输出
    1
    
    v = name.count('d',1,3)
    print (v)
    #输出
    0
    

      

    5、startswith,从开头匹配字符串,endswith从结尾去匹配字符串,支持索引范围

    例子:

    name = 'dragon'
    v = name.endswith('n',1,2)
    print (v)
    
    #输出
    
    False
    
    v = name.startswith('d')
    print (v)
    #输出
    True
    

      

    6、expandtabs将制表符,替换为空白,制表符前面的字符在空白内

    例子:

    name = 'a	b	c
    d	e	f'
    v = name.expandtabs(10)
    
    print (v)
    
    #输出
    a         b         c
    d         e         f  
    

      

    7、find和index,find查找不存在值返回-1,index直接报错

    例子:

    name = 'dragon'
    v = name.find('h')  #输出的是索引
    print (v)
    
    #输出
    -1
    
    name = 'dragon'
    v = name.index('r')  #输出的是索引
    print (v)
    #输出
    1
    

      

    8、format格式化输出

    例子:

    name = '1.%s,2.%s,3.%s'
    name = '1.{0},2.{1}.3.{2}'
    name.format(1,2,3)
    print (name)
    #输出
    1.{0},2.{1}.3.{2}
    
    name = '1.{name},2.{age},3{ganner}'
    
    name.format_map({'name':'alex','age':18,'ganner':'mid'})
    print (name)
    #输出
    1.{name},2.{age},3{ganner}
    
    name1 = '1.{name},2.{age},3{ganner}'
    name.format(name='dragon',age=19,ganner='mid')
    print (name)
    
    #输出
    1.{name},2.{age},3{ganner}
    

      

    9、isidentifier,判断首个字符是否是字母、下划线开头

    例子:

    name  = '9dragon'
    v = name.isidentifier()
    print (v)
    #输出
    False
    
    name = 'ale'
    v = name.isidentifier()
    print (v)
    #输出
    True
    

      

    10、isupper,判断字符串是否全为大写,islower,判断字符串是否全为小写

    例子:

    name = 'dragon'
    v = name.islower()
    print (v)
    
    #输出
    Ture
    name = 'DRAGON'
    v = name.isupper()
    print (v)
    #输出
    Ture
    

      

    11、strip移除空白, , ,自定义

    例子:

    name = 'wonder	'
    v = name.strip() # 空白,
    ,	
    print(v)
    
    #输出
    wonder
    

    12、upper,全部变大写,lower全部变小写

    例子:

    name = 'alex'
    v = name.upper()
    
    print (v)
    
    #输出
          ALEX
    name = 'GUEST'
    v1 = name.lower()
    print (v1)
    
    #输出
        guest
    

    13、isprintable,判断字符串是否包含隐藏字符

    例子:

    name = 'alex	'
    v = name.isprintable()
    print (v)
    
    #输出
        Flase
    

    14、判断字符串是否为空白,isspace

    例子:

    name = '    '
    v = name.isspace()
    print (v)
    
    #输出 
        True
    

    15、join字符串拼接

    例子:

    n = 'time1'
    v = '_'.join(n)
    print (v)
    #输出
    
        t_i_m_e_1
    
    user_list = ['小花','小明','小强']
    
    for v in user_list:
       h =  '听'.join(user_list)
    print (h)
    
    #输出
        小花听小明听小强
    

    16、左右填充,ljust,rjust

    例子:

    name = 'me'
    v = name.rjust(20)
    print (len(v))
    
    #输出
                      me
    

    17、对应关系+翻译--maketrans,translate

    例子:

    m = str.maketrans('abcde','12345') # 对应关系
    
    name = "akpsojfasdufasdlkfj8ausdfakjsdfl;kjer09asdf"
    v = name.translate(m)
    print(v)
    
    
    #输出
    kpsojf1s4uf1s4lkfj81us4f1kjs4fl;kj5r091s4f
    

    18、大写变小写,小写变大写,swapcase

    例子:

    name = "Python"
    v = name.swapcase()
    print(v)
    #输出
    pYTHON
    

    19、replace替换

    例子:

    name = 'dream'
    v = name.replace('dr','st')
    print (v)
    
    #输出
    
    steam
     
    

    20、partition分割,保留分割符

    例子:

    content = "a|b|c"
    v = content.partition('|')  # partition
    print(v)
    
    #输出
    
    ('a', '|', 'b|c')
    

    21、判断是否为数字

    例子:

    num = '②'
    v1 = num.isdecimal()  #'123'
    v2 = num.isdigit()    #'123','②'
    v3 = num.isnumeric()  #'123','二','②'
    print (v1,v2,v3)
    

     

    22、isalnum,isalpha

      isalnum为字符、数字 ,isalpha为字符

    例子:

    name = 'hello8美女'
    v = name.isalnum() #字符,汉子,数字
    print (v)
    #输出
    True
    v1 = name.isalpha() #汉子
    print (v1)
    #输出
    False
    

    23、zfill,填充0

    例子:

     name = "guest"
     v = name.zfill(20)
     print(v)
    
    #输出
    000000000000000guest
    

    24、split分割,不保留分割符

    例子:

    name = 'alex|eric'
    
    v = name.split('|')
    
    print (v)
    
    ['alex,'eric'']
    

    七、基本数据类型-列表(list)

      列表是有序可变的,可以增删改查 

    1、追加功能

    mail_list = ['hele','dream,''google']  #append都是从列表最后添加
    
    v = mail_list.clear()
    
    print (mail_list)
    
    #输出
    []
    

    2、清空clear

    mail_list = ['hele','dream,''google']  #append都是从列表最后添加
    
    v = mail_list.clear()
    
    print (mail_list)
    
    
    #输出
    
    []
    

    3、copy(浅拷贝)

    浅拷贝:浅拷贝,只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。(浅copy只有最外层会各自不影响,其余都是同一块内存地址,要更改都更改)

    深拷贝:深拷贝,拷贝对象及其子对象  (深copy就是所有对象和子对象独立,互相修改没有任何影响)

    例子:

    user_list = ['a','b','c','d']
    
    浅copy
    v = user_list.copy()
    print (v)
    print (user_list)
    
    
    #输出
    
    ['a', 'b', 'c', 'd']
    ['a', 'b', 'c', 'd']
    

     深浅copy的例子:

      

    import copy  
    a = [1, 2, 3, 4, ['a', 'b']] #原始对象  
      
    b = a #赋值,传对象的引用  
    c = copy.copy(a) #对象拷贝,浅拷贝  
    d = copy.deepcopy(a) #对象拷贝,深拷贝  
      
    a.append(5) #修改对象a  
    a[4].append('c') #修改对象a中的['a', 'b']数组对象  
      
    print 'a = ', a  
    print 'b = ', b  
    print 'c = ', c  
    print 'd = ', d  
    
    '''
    输出结果: 
    a = [1, 2, 3, 4, ['a', 'b', 'c'], 5] 
    b = [1, 2, 3, 4, ['a', 'b', 'c'], 5] 
    c = [1, 2, 3, 4, ['a', 'b', 'c']] 
    d = [1, 2, 3, 4, ['a', 'b']]
    
    '''
    

      

    4、count(计数)

    例子:

    user_list = ['a','b','c','d']
    v =user_list.count('a')
    print (v)
    
    #输出
    
    4
    

    5、extend扩展原列表

    例子:

    user_list = ['a','b','c','d']
    user_list.extend(['e','f'])
    print (user_list)
    
    #输出
    ['a', 'b', 'c', 'd', 'e', 'f']
    

    6、index,查找列表元素,没有报错

    例子:

    user_list = ['a','b','c','d']
    print (user_list.index('a'))
    
    #输出
    0
    

    7、pop,删除并获取元素-索引

    pop:pop根据索引进行删除

    remove: remove根据元素进行删除

    例子:

    user_list = ['a','b','c','d']
    v = user_list.pop(1)  #根据索引进行删除
    print (user_list)
    
    #输出
    ['a', 'c', 'd']
    
    user_list.remove('a')  #根据元素值进行删除
    print (user_list)
    
    #输出
    
    ['c', 'd']
    

    8、reverse,反转

    例子:

    user_list = ['a','b','c','d']
    user_list.reverse()
    print (user_list)
    
    
    #输出
    ['d', 'c', 'b', 'a']
    
    
    #第二种方法,切片
    print (user_list[::-1])
    
    #输出
    ['a', 'b', 'c', 'd']
    

    9、sort,排序

    例子:

    num = [1,3,4,5,6]
    num.sort()   #从大到小
    print (num)
    
    #输出
    [1, 3, 4, 5, 6]
    
    num.sort(reverse=True)  #从小到大
    print (num)
    #输出
    
    [6, 5, 4, 3, 1]
    

    10、额外功能

    user_list = ['apple','pen','cat','tom','mic','lili']
    user_list[0] #根据索引查值
    user_list[1:5:2] #切片+步长
    del user_list[3] #根据索引删除
    for i in user_list: #循环列表
        print(i)
    user_list[1] = 'happy' #根据索引赋值
    user_list = ['apple','pen','cat','tom',['mic,'test''],'lili' #列表嵌套列表
    

     八、数据基本类型-tuple(元组)

      元组的特性:属于不可变类型,不可被修改的列表

          *****元祖中套列表,字典,列表和字典是可变类型,可以被改变

          *****元祖最后要加一个逗号,避免元组里只有一个元素,被转换成字符串

    1、元组计数count

    例子:

    user_tuple = ('a','b','c')
    print (user_tuple.count('a'))
    
    #输出
    1
    

    2、index获取索引位置

    例子:

    user_tuple = ('a','b','c')
    print (user_tuple.index('b'))
    
    #输出
    1
    

    3、tuple额外功能

    list1 = [1,2,3,4,5]
    
    tuple1 = tuple(list1)
    
    print (tuple1)
    
    #输出
    (1, 2, 3, 4, 5)
    
    for i in tuple1:
        print(i)
    
    v = tuple1[0]  #查询
    
    v = tuple1[0:2]  #分片
    print(v)
    
    user_tuple = tuple1
    user_tuple[0] = 123   #错误方法
    user_tuple[3] = [11,22,33] #错误方法
    user_tuple[3][1] = '99'
    print(user_tuple)
    
    ****** 元组最后,加逗号 ******
    li = ('alex',)
    print(li)
    

    九、数据基本类型-dict(字典)

      字典属于可变类型,key-value结构

        字典可嵌套,字典的key必须是不可变类型

    1、clear清空

    dic = {'k1':'v1','k2':'v2'}
    dic.clear()
    print(dic)
    
    
    #输出 
    {}
    

    2、浅copy

    dic = {'k1':'v1','k2':'v2'}
    v = dic.copy()
    print(v)
    
    
    #输出
    {'k1':'v1','k2':'v2'}
    

    3、get,根据key值获取指定的value,不存在报错

    dic = {'name':'seven','age':19}
    v = dic.get('name')
    print (v)
    
    #输出
    
    seven
    

    4、pop删除

    dic = {'name':'seven','age':19}
    dic.pop('name')
    print (dic)
    
    #输出
    
    {'age': 19}
    

    5、popitem,随机获得键值对,并获取到删除的键值

    dic = {'name':'seven','age':19}
    dic.popitem()
    print (dic)
    
    #输出
    不固定 --> {'name': 'seven'} / {'age': 19}
    

    6、setdefault,增加kv,如果存在不增加,也不替换更新

    dic = {'name':'seven','age':19}
    dic.setdefault('page',18)
    print (dic)
    
    #输出
    {'page': 18, 'age': 19, 'name': 'seven'}
    
    
    dic = {'name':'seven','age':19}
    dic.setdefault('name','dr')
    print (dic)
    
    #输出
    {'age': 19, 'name': 'seven'}
    

    7、update,批量增加或者修改

    dic = {'name':'seven','age':19}
    dic.update({'sex':'mid','page':18})
    print (dic)
    
    
    #输出
    {'name': 'seven', 'age': 19, 'page': 18, 'sex': 'mid'}
    

    8、fromkeys

      函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。dic = dict.fromkeys(['k1','k2','k3'],123)

    print(dic)
    dic = dict.fromkeys(['k1','k2','k3'],123)
    dic['k1'] = 'guest'
    print(dic)
    #输出

    {'k1': 123, 'k3': 123, 'k2': 123}
    {'k1': 'guest', 'k3': 123, 'k2': 123}

    十、数据基本类型-集合

      集合是不可重复的列表,可变类型

    1、difference

    s1 = {"alex",'eric','tony','happy','lili'}
    s2 = {"alex",'eric','tony','anni'}
    #1.s1中存在,s2中不存在
    v = s1.difference(s2)
    print(v)
    
    #输出
    {'lili', 'happy'}
    

    2、difference_update

    s1 = {"alex",'eric','tony','happy','lili'}
    s2 = {"alex",'eric','tony','anni'}
    #s1中存在,s2中不存在,然后对s1清空,然后在重新复制
    s1.difference_update(s2)
    print(s1)
    
    #输出
    {'happy', 'lili'}
    

    3、difference_update

    #s2中不存在,s1中存在,s1中不存在,s2中存在
    s1 = {"alex",'eric','tony','happy','lili'}
    s2 = {"alex",'eric','tony','anni'}
    v = s1.symmetric_difference(s2)
    print(v)
    
    #输出
    {'lili', 'happy', 'anni'}
    

    4、intersection交集

    s1 = {"alex",'eric','tony','happy','lili'}
    s2 = {"alex",'eric','tony','anni'}
    v = s1.intersection(s2)
    print(v)
    #输出
    {'tony', 'alex', 'eric'}
    

    5、union并集

    s1 = {"alex",'eric','tony','happy','lili'}
    s2 = {"alex",'eric','tony','anni'}
    v = s1.union(s2)
    print(v)
    
    #输出
    {'lili', 'alex', 'tony', 'anni', 'eric', 'happy'}
    

    6、discard移除

    s1 = {"alex",'eric','tony','happy','lili'}
    s1.discard('alex')
    print(s1)
    #输出
    {'tony', 'lili', 'eric', 'happy'}
    

    7、update更新

    s1 = {"alex",'eric','tony','happy','lili'}
    s1.update({'alex','123123','fff'})
    print(s1)
    #输出
    {'lili', 'alex', '123123', 'eric', 'fff', 'tony', 'happy'}
    

    十一、range

    python2.* : range会立刻生成数字,加载到内存中

    python2.* : xrange 生成一个迭代值,只有循环迭代的时候,才会一一调用

    python3.* :range会生成一个迭代值,只有循环迭代的时候,才会一一调用

    for i in range(10):
        print(i)
    
    #输出
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    for i in range(1,11,2): #输出奇数
         print(i)
    
    for i in range(10,0,-1): #从大到小输出
         print(i)
    

    十二、enumerate

    #enumerate额外生成一列有序的数字
    li = ['pie','pig','apple']
    for i,v in enumerate(li,1):
        print(i,v)
    
    #输出
    1 pie
    2 pig
    3 apple
    

     

     

  • 相关阅读:
    linux kgdb 补丁
    linux kdb 内核调试器
    linux 使用 gdb
    linux 系统挂起
    linux oops 消息
    linux strace 命令
    linux ioctl 方法
    linux seq_file 接口
    [数据结构] 迷宫问题(栈和队列,深搜和广搜)
    简化浏览器地址栏訪问路径
  • 原文地址:https://www.cnblogs.com/liujiliang/p/6838978.html
Copyright © 2011-2022 走看看