zoukankan      html  css  js  c++  java
  • second day--数据类型

    一、int

    # bit_length表示二进制的有效位数
    i1=3
    i2=4
    print(i1.bit_length(),i2.bit_length()) #2 3
    

     二、bool

    """
    int  ---> str :str(int)
    str  ---> int :int(str) str必须全部是数字组成。
    
    int --- > bool  0 False  非零 True
    bool ---> int  int(True) 1    int(False)  0
    
    str ---> bool  '' False   非空字符串 True
    """
    # print(int(True))  #1
    # print(bool("")) # False
    bool

    三、str

    1.索引、切片、步长
    1 # s='python自动化运维21期'
    2 # s1=s[0:6]
    3 # print(s1)
    4 # s2=s[-1:-5:-1]
    5 # print(s2)
    6 # s3=s[::2]
    7 # print(s3)
    切片

    注意:

    #切片
    # s[起始索引:结束索引+1:步长]
    # s1 = s[:6] #顾头不顾腚

    # s5 = s[-1:-5:-1]  #倒着取值,必须加反向步长

    2.字符串方法

    1.首字母大写,其他字母小写
    1 s = 'oldBoy'
    2 # * capitalize 首字母大写,其他字母小写
    3 # s1 = s.capitalize()
    4 # print(s1)
    capitalize

        2.全部大写upper() 全部小写lower()

    1 # code = 'QeAr'.upper()
    2 # your_code = input('请输入验证码:').upper()
    3 # if your_code == code:
    4 #     print('验证成功')
    View Code

        3.大小写反转 swapcase()

         4.*非字母的元素隔开的每个单词首字母大写 title()

    1 *非字母的元素隔开的每个单词首字母大写 title()
    2 # s = 'alex wusir*oldboy3taibia'
    3 # s5 = s.title()  # Alex Wusir*Oldboy3Taibia
    4 # print(s5)
    title

    5.center 居中,长度自己设定,默认填充物None,也可指定

    1 s6 = s.center(30)
    2 # s6 = s.center(30,"*")
    3 # print(s6)
    title

    6.startswith endswith 判断不同的业务逻辑

    1 s = 'oldBoy'
    2 # *** startswith endswith
    3 # s7 = s.startswith('o')
    4 # s7 = s.startswith('ol')
    5 # s7 = s.startswith('oldBoy')
    6 # s7 = s.startswith('Bo',3,5)
    7 # print(s7)
    View Code

    7.strip 去掉收尾空格!!! 制表符 换行符

    # 用途:验证误输入空格,input('>>>: ').strip()
    # 去想去的任何元素;;;迭代去重,包含就去掉
    # 只去前面:lstrip() 只去右边rstrip()
    # s = 'tyoyldBoyrte'
    # *** strip 去除首尾的空格,制表符	,换行符。不仅仅是去除空格....
    #lstrip() rstrip()
    # print(s)
    # s8 = s.strip()
    # print(s8)
    # s81 = s.strip('t')
    # print(s81)
    # s81 = s.strip('tey')
    # print(s81)
    
    # name = input('>>>').strip()
    # if name == 'oldboy':
    #     print('验证成功')
    strip 
    8.s.split() very imporant str----> list
    # 可以任何形式隔开 被隔元素清除,注意例子中空字符
    # 可设置次数切割
     1 #*** split  (str ---> list)
     2 # s1 = 'oldboy,wusir,alex'
     3 # s = 'oldboywusiroalex'
     4 # l = s.split()
     5 # print(l)
     6 # l = s1.split(',')
     7 # print(l)
     8 # l2 = s.split('o')  # ['', 'ldb', 'ywusir', 'alex']
     9 # print(l2)
    10 
    11 # l2 = s.split('o',1)  # ['', 'ldboywusiroalex']
    12 # print(l2)
    split
    9.join   字符串类型的     iterable 可迭代的
    # 可操作字符串、元祖、列表
    # s1='+'.join(s)
    # 例子,,,list--->str
    '_'.join(iterable)  list(每个元素必须是str) --> str
    # s = 'oldBoy'
    #join 将list --->str
    # s9 = '+'.join(s)
    # s9 = '_'.join(s)
    # print(s9)
    # l1 = ['oldboy','wusir','alex']
    # s91 = '_'.join(l1)
    # print(s91)
    join
    10.replace 替换
    # s = '大铁锤fdsalj铁锤妹妹范德萨'
    # #replace
    # s10 = s.replace('铁锤','钢蛋')
    # print(s10)
    replace
    11.find 通过元素找索引,找不到返回-1 较好
    # 返回正向索引
    # index 通过元素找索引 ,找不到会报错
    s = 'oldBoy'
    #find 通过元素找索引  找不到返回-1
    # index 通过元素找索引 找不到报错
    # ind = s.find('d')
    # print(ind)
    # ind = s.find('o')
    # print(ind)
    # ind = s.find('A')
    # print(ind)
    # ind = s.index('A')
    # print(ind)
    find
    12.格式化输出format
    #格式化输出format
    # res='我叫{}今年{}岁,爱好{}'.format('egon',18,'male')
    # print(res)
    # res='我叫{0}今年{1}岁,爱好{2},我依然叫{0}'.format('egon',18,'male')
    # print(res)
    # res='{name} {age} {sex}'.format(sex='male', name='egon', age=18)
    # print(res)
    format
    13.公共方法:   len    count
    # [] ,() ,str都可用
    # s = 'fdsafsdagsdafjdskahdhjlsadhfkj'
    # print(len(s))
    # s = 'fdsadd'
    # print(s.count('d'))
    View Code
    14.is系列
    # name='lijie123'
    # print(name.isalnum()) #字符串由字母或数字组成
    # print(name.isalpha()) #字符串只由字母组成
    # print(name.isdigit()) #字符串只由数字组成
    # name = 'jinxin123'
    # print(name.isalnum()) #字符串由字母或数字组成
    # print(name.isalpha()) #字符串只由字母组成
    # print(name.isdigit()) #字符串只由数字组成
    # i = '123a'
    # if i.isdigit():
    #     i = int(i)
    # else:
    #     print("输入有误...")
    View Code

    四、list

    存储大量的数据类型
    1.有序、索引、切片
    # li = [111,'alex',222,'wusir']
    # print(li[1])  # alex
    # print(li[-1])  # wusir
    # print(li[:2])  # [111, 'alex']
    # print(li[:3:2])
    View Code

    2.增--append()、insert、extend

     1 l = ['老男孩', 'alex', 'wusir', 'taibai', 'ritian']
     2 #  增
     3 # append()在最后增加
     4 # l.append('dg')
     5 # print(l)
     6 # # insert插入,可指定位置
     7 # l.insert(1,'zz')
     8 # print(l)
     9 # extend 迭代着增加  分解着添加
    10 # l.extend([1,2,3,4])
    11 # print(l)
    list add

    3.删除--pop、remove、clear、del

     1 # # #删
     2 # # pop() 有返回值,按照索引去删除,返回删除的内容
     3 # l.pop(1)
     4 # print(l)
     5 # # remove()  按照元素去删除
     6 # l.remove('wusir')
     7 # print(l)
     8 # # clear 清空列表内容
     9 # l.clear()
    10 # print(l)
    11 # del l,在内存中删除列表  ;按索引删除
    12 # del l
    13 # print(l)
    14 # 切片删除 del l[:3]  #删除列表中前三个元素
    15 # del l[1:3]
    16 # print(l)
    list--删除

    4.改--按索引、按切片

    # #改
    # 按照索引改l[2]='123'
    # l[1]='123'
    # print(l)
    # 按照切片去改:切片内容删除+以最小元素增加
    # l[1:3]='ale'
    # print(l)
    list--改

    5.查---按照索引去查询,按照切片去查询

    l = ['老男孩', 'alex', 'wusir', 'taibai', 'ritian']
    # # 查
    # 按照索引查询
    # 按照切片查询
    # 循环
    for i in l:
        print(i)
    list--查

    6. 其它方法:

    # 1.count计数
    # 2.len()长度
    # 3.index 通过元素找索引 ,第一个就返回
    # 4.sort()从小到大排序
    # sort(reverse=True) 从大到小排序
    # 5.reverse() 倒序
    l=[1,2,1,4,6,2,5,7]
    # print(l.count(3))
    # print(len(l))
    # print(l.index(2))
    # l.sort()
    # print(l)
    # l.sort(reverse=True)
    # print(l)
    print(l.reverse())  #None
    l.reverse()
    print(l)
    View Code

    7.列表的嵌套

    # l1 = [1, 2, 'alex', 'wusir',['oldboy', 'ritian', 10], 'taibai']
    #1,将'alex'全部变成大写,放回原处。
    # l1[2] = 'ALEX'
    # print(l1[2].upper())
    # l1[2] = l1[2].upper()
    # print(l1)
    #2.给['oldboy', 'ritian', 99] 追加一个元素‘女神’。 一个方法
    # l1[-2].append('女财神')
    # print(l1)
    #3,将'ritian'首字母大写,放回原处。
    # l1[-2][1] = l1[-2][1].capitalize()
    # print(l1)
    #4,将10通过数字相加,或者字符串相加或者等等,变成'100'
    # l1[-2][-1] = str(l1[-2][-1] + 90)
    # print(l1)
    
    # l1[-2][-1] = str(l1[-2][-1]) + '0'
    # print(l1)
    练习

    五、dict

    1.字典的key是唯一的。

    字典的key是唯一的。key 必须是不可变的数据类型。
        key:不可变的数据类型(可哈希):str,bool,tuple,int。
        value:任意数据类型。
            数据类型分类:
                不可变的数据类型(可哈希):str,bool,tuple,int
                可变的数据类型:dict,list,set。
                容器类数据类型:list,tuple,dict,set.
    字典:存储数据多,关系型数据,查询速度快(二分查找)。
    3.6版本之前,字典是无序的,3.6之后字典是有序的。
    知识点

    2.增--直接添加或setdefault

    增 、
    # dic['sex']='male'
    # dic.setdefault('name',123)
    # print(dic)
    # dic['high']=180   #有则覆盖,无则添加
    # dic.setdefault('name','')  #有则不变,无则添加
    dic-增

    3.删---pop、clear、popitem、del

    # # 删、
    # dic.pop('name')    有返回值,对应的值
    # dic.pop('name1',None)
    # dic.clear()
    # del dic
    # print(dic)
    #
    # dic.clear()     #清空
    
    # del dic     #删除,,,
    # # 按照键去删除
    # del dic['age']
    #
    # dic.popitem() 随机删除,有返回值,返回删除的内容,放在元祖中
    # dic.pop('name1','没有')
    # print(dic)
    # dic.pop('name1','没有此key')   #常用,避免报错
    dic--删除

    4.改---直接修改,update

    # 改
    # dic['name'] = '老男孩'
    # print(dic)
    
    # dic = {"name":"jin","age":18,"sex":"male"}
    # dic2 = {"name":"alex","weight":75}
    # dic2.update(dic)  # 将dic的键值对覆盖添加到dic2中,dic不变。
    # print(dic)
    # print(dic2)
    字典--改

    5.查---get

    #查
    # print(dic['name2'])
    # print(dic.get('name'))
    # print(dic.get('name1'))
    # print(dic.get('name1','没有此key,sb'))
    字典--查

    6.keys() values() items()三种方法

    #keys() values() items()
    # print(list(dic.keys()))
    # for i in dic.keys():
    #     print(i)
    
    # print(dic.values())
    # for i in dic.values():
    #     print(i)
    
    # print(list(dic.items()))
    # for i in dic.items():
    #     print(i)
    
    # for i in dic.items():
    #     print(i)
    #
    # for k,v in dic.items():
    #     print(k,v)
    
    
    #分别赋值
    # a,b = 1,2
    # a,b,c = ['alex', 'wusir', 'ritain']
    # print(a,b,c)
    # a = 1
    # b = 5
    # a,b = b,a
    # print(a,b)
    
    # len(dic)   键值对的个数
    
    # fromkeys      创建字典
    
    dic1 = dict.fromkeys('abc','张三')
    dic2= dict.fromkeys([1,2,3],'李四')
    print(dic1)
    
    #注意:全部都追加
    # dic3 = dict.fromkeys('abc',[])
    # # print(dic3)
    # dic3['a'].append('老男孩')
    # print(dic3)
    View Code
    fromkeys结果:
    {'a': '张三', 'b': '张三', 'c': '张三'}
    {1: '李四', 2: '李四', 3: '李四'}
    {'a': [], 'b': [], 'c': []}
    {'a': ['老男孩'], 'b': ['老男孩'], 'c': ['老男孩']}

    7.字典的嵌套

     1 dic = {
     2     'name_list':['b哥', '张帝', '人帅', 'kitty'],
     3     '老男孩':{
     4         'name':'老男孩',
     5         'age': 46,
     6         'sex': 'ladyboy',
     7     },
     8 }
     9 #1,['b哥', '张帝', '人帅', 'kitty']追加一个元素,'骑兵'
    10 # dic['name_list'].append('骑兵')
    11 # print(dic)
    12 #2,将kitty全部变成大写。
    13 # l1 = dic['name_list']
    14 # print(l1[-1].upper())
    15 # l1[-1] = l1[-1].upper()
    16 # print(dic)
    17 # dic['name_list'][-1] = dic['name_list'][-1].upper()
    18 # print(dic)
    19 
    20 #3,将老男孩 改成oldboy。
    21 # dic['老男孩']['name'] = 'oldboy'
    22 # print(dic)
    23 #,将ladyboy首字母大写。
    24 # dic['老男孩']['sex'] = dic['老男孩']['sex'].capitalize()
    25 # print(dic)
    练习

    六、tuple

    # 元祖  主要用于查 ;儿子不能改,孙子级别可以修改
    # 索引、切片、步长
    #索引index
    # count len
    # tu = (11,2,True,[2,3,4],'alex')
    # # for i in tu:
    # #     print(i)
    # # print(tu[1])
    # # print(tu[:3:2])
    # # print(tu.index(True))
    # # print(tu.count(2))
    # # print(len(tu))
    # tu[-2].append(666)
    # print(tu)
    View Code

    七、set

    集合:无序,不重复的数据类型。它里面的元素必须是可哈希的。但是集合本身是不可哈希的。
    1:关系测试。交集并集,子集,差集....
    2,去重。(列表的去重)

     set1 = {1,'alex',False,(1,2,3)}
    # l1 = [1,1,2,2,3,3,4,5,6,6]
    # l2 = list(set(l1))
    # print(l2)
    去重

    1.增--add,update(以小元素的方式增)无序

    # set1 = {'alex','wusir','ritian','egon','barry'}
    # 增
    # set1.add('666')
    # print(set1)
    
    # update
    # set1.update('abc')
    # print(set1)  #{'alex', 'barry', 'a', 'c', 'wusir', 'egon', 'b', 'ritian'}
    set--增

    2.删---remove、pop、clear、del   set删除不常用

    #删
    # set1 = {'alex','wusir','ritian','egon','barry'}
    
    # set1.remove('alex')  # 删除一个元素
    # print(set1)
    
    # set1.pop()  # 随机删除一个元素
    # print(set1)
    #
    # set1.clear()  # 清空集合
    # print(set1)
    #
    # del set1  # 删除集合
    # print(set1)
    set---删除

    3.集合间操作

    交集&  并集 |   差集-  反交集^    子集和超集

     1 set1 = {1,2,3,4,5}
     2 set2 = {4,5,6,7,8}
     3 
     4 #交集 &  intersectio
     5 # print(set1 & set2)
     6 # print(set1.intersection(set2))
     7 
     8 #并集 |   union
     9 # print(set1 | set2)
    10 # print(set1.union(set2))
    11 
    12 #差集  -  difference
    13 # print(set1 - set2)
    14 # print(set1.difference(set2))
    15 
    16 #反交集 ^ symmetric_difference
    17 # print(set1 ^ set2)
    18 # print(set1.symmetric_difference(set2))  # {1, 2, 3, 6, 7, 8}
    19 # set1 = {1,2,3}
    20 # set2 = {1,2,3,4,5,6}
    21 
    22 # print(set1 < set2)
    23 # print(set1.issubset(set2))  # 这两个相同,都是说明set1是set2子集。
    24 
    25 # print(set2 > set1)
    26 # print(set2.issuperset(set1))
    View Code

    4.frozenset不可变集合,让集合变成不可变类型。

    s = frozenset('barry')
    print(s,type(s))  # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>
    

     八、数据类型补充

    #再循环一个列表时,不要对列表进行删除的动作(改变列表元素的个数动作),会出错

    # dict 再循环字典时,不要改变字典的大小。

    #tu 如果元组里面只有一个元素并且没有逗号隔开,那么他的数据类型与该元素一致。

     1 l1 = ['alex', 'wusir', 'taibai', 'barry', '老男孩']
     2 #删除奇数位   正确
     3 # del l1[1::2]
     4 # print(l1)
     5 
     6 
     7 #再循环一个列表时,不要对列表进行删除操作(改变列表元素个数),会出错
     8  #error 9 # for i in l1:
    10 #     if l1.index(i)%2==1:
    11 #         del l1[l1.index(i)]
    12 # print(l1)
    13 #
    14 # for i in range(len(l1)) :
    15 #     if i%2==1:
    16 #         del l1[i]
    17 # print(l1)
    18 #
    19 #可采用倒着删除    --20 # for i in range(len(l1)-1,-1,-1):
    21 #     if i%2==1:
    22 #         del l1[i]
    23 # print(l1)
    24 #
    25 
    26 #range 可定制的数字列表
    27 # for i in range(10):
    28 #     print(i)
    29 # for i in range(1,10):
    30 #     print(i)
    31 # for i in range(1,10,2):
    32 #     print(i)
    33 
    34 # for i in range(10,1,-1):
    35 #     print(i)
    36 #删除含k元素的键值对
    37 #再循环字典时,不要改变字典的大小(增加或删除)
    38 dic = {'k1':'v1','k2':'v2','k3':'v3','r':666}
    39 
    40 l1 =[]
    41 for i in dic:
    42     #print(i)
    43     if 'k'in i:
    44         l1.append(i)
    45 for i in l1:
    46     del dic[i]
    47 print(dic)
    48 
    49 
    50 #如果元祖里面只有一个元素,并且没有,隔开,那么数据类型与该元素一致
    51 # tu1 = (1)
    52 # print(tu1,type(tu1))
    53 # tu2 = ('alex')
    54 # print(tu2,type(tu2))
    55 #
    56 # tu3 = (['alex',1,2])
    57 # print(tu3,type(tu3))   #['alex', 1, 2] <class 'list'>
    View Code

    九、小数据池

        python中存在小数据池: str int

    int -5~256  内的相同的数,全都指向一个内存地址,节省空间

    str 单个字符*20以内都是同一个内存地址,只要字符串中含有非字母元素,那就不是一个内存地址
    #id == is
    # a = 'alex'
    # b = 'alex'
    # print(a == b)  # 数值
    # print(a is b)  # 内存地址
    # print(id(a))
    
    #python中 有小数据池的概念。
    # int -5 ~256 的相同的数全都指向一个内存地址,节省空间。
    # str:s = 'a' * 20 以内都是同一个内存地址
        #只要字符串含有非字母元素,那就不是一个内存地址
    View Code

    十、深浅copy

    赋值运算,它们共用一个内存空间
    对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。
    对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。
     1 #深浅copy
     2 #赋值运算,它们共用一个列表
     3 # a = [1,2,3]
     4 # b = a
     5 # a.append(666)
     6 # print(a,b)
     7 
     8 #浅copy
     9 # l1 = [1,2,3]
    10 # l2 = l1.copy()
    11 # l1.append(666)
    12 # print(l1,l2)
    13 # print(id(l1),id(l2))
    14 
    15 # l1 = [1,2,3,[22,33]]
    16 # l2 = l1.copy()
    17 # l1[-1].append(666)
    18 # print(l1,l2)
    19 # print(id(l1[-1]),id(l2[-1]))
    20 
    21 #对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,
    22 # 指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性
    23 
    24 #深copy 对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。
    25 # import copy
    26 # l1 = [1,2,3,[22,33]]
    27 # l2 = copy.deepcopy(l1)
    28 # l1[-1].append(666)
    29 # print(l1,l2)
    30 # print(id(l1[-1]),id(l2[-1]))
    copy

    十一、编码

    字符编码
    1.不同编码的二进制是不能互相识别的
    2.python3x str内部编码方式(内存)为unicode
    但是,对于文件的存储和传输,不能用unicode---浪费空间
    bytes 内部编码方式(内存)为非unicode(utf-8,gbk)


    转化:
    s='lijie'
    s2=s.encode('utf-8') #编码 str---->bytes
    s3=s.encode('gbk')
    print(s2)

    ss=s2.decode('utf-8') #解码 bytes--->str
     1 #对于英文
     2 # s = 'laonanhai'
     3 # print(s,type(s))
     4 #
     5 # s1 = b'laonanhai'
     6 # print(s1,type(s1))
     7 
     8 #对于中文:
     9 # s = '中国'
    10 # print(s,type(s))
    11 #
    12 # s1 = b'xe4xb8xadxe5x9bxbd'
    13 # print(s1,type(s1))
    14 
    15 #转化
    16 # s = 'laonanhai'
    17 # s2 = s.encode('utf-8')  #str -->bytes encode 编码
    18 # s3 = s.encode('gbk')
    19 # print(s2,s3)
    20 # s = '中国'
    21 # s2 = s.encode('utf-8')  #str -->bytes encode 编码
    22 # # s3 = s.encode('gbk')
    23 # # print(s2)  #b'xe4xb8xadxe5x9bxbd'
    24 # # print(s3)   #b'xd6xd0xb9xfa'
    25 # ss = s2.decode('utf-8')  # bytes ---> str decode 解码
    26 # print(ss)   #中国
    编码

     

     
     
     
     
  • 相关阅读:
    Qt 主窗口与子窗口之间传值
    Qt 如何使窗体初始最大化
    C++ strcmp与strncmp的比较
    Qt 状态栏(statusbar)的使用
    C++中的补零
    Qt QString转char[]数组
    PAT基础6-9
    PAT基础6-8
    PAT基础6-6
    PAT基础6-7
  • 原文地址:https://www.cnblogs.com/lijie123/p/8746944.html
Copyright © 2011-2022 走看看