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

    数字 int:

    1、将字符串转换为整形

    a = "789"
    print(type(a))
    b = int(a)
    print(type(b))

    将字符串转换为数字类型(设a为字符串类型)

    new_a = int(a)

    2、当前数字的二进制至少需要多少位表示

    -bit_lenght
    num = "0011" v = int(num,base = 16) print(v) r = age.bit_lenght()

     字符串 str:   

    #首字母大写
    -capitalize
    test = "harvey" v = test.capitalize()
    print(v)
    #全部变大写
    -swapcase
    test = "harvey"
    v = test.swapcase()
    print(v)
    #全部变小写,casefold更全面更完美
    -casefold
    test = "HARVEY"
    v = test.casefold()
    print(v)
    -lower test = "HARVEY" v = test.lower() print(v)

    #######################################
    #判断是否大写/小写;全部转换为大写/小写(用于登陆时用户输入的验证码)
    -upper/lower test = "haRvey" v1 = test.islower() v2 = test.lower() print(v1,v2) test = "haRvey" v1 = test.isupper() v2 = test.upper() print(v1,v2)
    #######################################
    #设置宽度(20)并将内容居中,两边空白可加仅一个字符
    -center
    test = "harvey"
    v = test.center(20,"-")
    print(v)
    -ljust/rjust
    test = "harvey"
    v = test.ljust(20,"*")
    v = test.rjust(20,"x")
    v = test.zfill(20)
    print(v)
    #字符串中寻找某子序列出现的次数
    -count
    test = "harveyHarvey"
    v = test.count('H')
    print(v)
    
    #可设置寻找范围,起始位x和结尾位y,范围是从x+1位开始到y位结束(范围型基本都为x+1)
    test = "harveyHarvey"
    v = test.count('ar',7,9)
    print(v)
    #判断以...开始/结束
    -startswith/-endswith
    test = "harvey"
    v = test.startswith('r')
    print(v)
    v = test.endswith('y')
    print(v)
    ######################################
    #寻找字符串中子序列是否存在及存在的位置(从左到右),不存在结果为-1。index功能与find相同,区别为找不到会报错,故一般不使用-find/-index
    -find test
    = "harveyHarvey" v = test.find('8') print(v) v = test.find('H') print(v)
    ######################################
    #将一个字符串中的占位符替换为指定的值
    -format/format_map
    test = 'I am {name},age is {a}'
    print(test)
    v = test.format(name = 'harvey',a = '21')
    print(v)
    test = 'I am {0},age is {1}'
    v = test.format('harvey','21')
    print(v)

    #-format与-format_map用法的区别
    test = 'I am {name},age {a}'
    v1 = test.format(name = 'harvey',a = '21')
    v2 = test.format_map({"name":'harvey',"a":'21'})
    print(v1,v2)
    #判断字符串中是否只包含数字和字母
    -isalnum
    test = 'harvey0414'
    v = test.isalnum()
    print(v)
    thing = 'utf-8_789'
    v = thing.isalnum()
    print(v)
    #判断字符串中是否只有字母和汉字
    -isalpha test = 'qwer' v = test.isalpha() print(v)
    #判断字符串中是否只是数字
    -isdecimal
    -isdigit
    -isnumeric test = "" # 1,② v1 = test.isdecimal() #针对范围最小 v2 = test.isdigit() #可支持绝大部分语言中的数字 v3 = test.isnumeric() #最全面,可支持汉字 print(v1,v2,v3)
    #是否存在不可显示的字符(如
    换行符,	制表符)
    -isprintable test = "asfagsdg/tasafg" v = test.isprintable() print(v)
    #判断是否全是空格
    #expandtabs:指定空格数
    -isspace test = "" v = test.isspace() print(v)
    #判断是否为标题(every word首字母大写)
    -istitle
    test = "you are my uniqueness" v = test.istitle() print(v) #转换成标题 -title
    test = "you are my uniqueness" v = test.title() print(v)
    ########################
    #将字符串中每一个元素按照指定分隔符拼接
    -join
    test = "刹那芳华" v = "_".join(test) print(v)
    刹_那_芳_华
    ########################
    #################################
    #移除字符串头尾指定的字符(默认为空格或换行符)或字符序列
    ,从左/右开始
    #移除空格或 , ,从左/右开始
    -strip test = "harvey" v1 = test.strip('ar') v2 = test.lstrip('har') v3 = test.rstrip('ey') print(v1,v2,v3)
    harvey vey harv
    #################################
    #对应关系替换
    -makestrans,-translate test1 = "aeiou" test2 ="12345" v = "asddsge;wtreodf;hkukljuio" n = makestrans("aeiou","12345") #n = makestrans(test1,test2) new_v = translate(n) print(new_v)
    #将字符串分割为三部分,从左/右开始
    -partition
    test = "ouiohtnagfdhsfgh" v = test.partition('s') print(v) v = test.rpartition('s') print(v)
    ######################################
    #
    分割指定前几个,从左/右开始 -split
    test = "ousgnfjknosnkfspiu" v = test.split('s',2) print(v) v = test.rsplit('s',2) print(v)
    ['ou', 'gnfjkno', 'nkfspiu']
    ['ousgnfjkno', 'nkf', 'piu']
    #整数计算器
    value = "4+5"
    v1,v2 = value.split('+')
    v1 = int(v1)
    v2 = int(v2)
    print(v1+ v2)
    ######################################
    #分割,根据True和False确定是否保留换行符
    
    -splitlines
    test = 'qwertyu asdfg zxvb' v = test.splitlines(False) print(v)
    #检测字符串是否是字母开头
    -isidentifier
    test = "class" v = test.isidentifier() print(v)
    #########################
    #将指定字符串替换为指定字符串,并可以指定具体前几个
    -replace
    test = "harveyharveyharvey" v = test.replace("vey",'bbbbb') print(v) harbbbbbharbbbbbharbbbbb test = "harveyharveyharvey" v = test.replace("vey",'bbbbb',2) print(v) harbbbbbharbbbbbharvey
    #########################

    重点:join添加,   replace代替,   split分割,   upper变大写,   lower变小写,   find寻找字符串中字符,   strip移除

    四个超重点:
    一、for循环

    for 变量名 in 字符串;
    countinue  #跳出当前循环,当前循环不做操作,若有上一级循环则进入,如没有则什么都不输出
    break    #中止整个循环
    二、test[3]索引,下标,获取字符串中的某一个字符
    #test[3]获取字符串中的某一个字符
    test = "你怕是个小傻子吧"
    item = 0
    while item < len[test]:
        v = test[item]
        print(v)
        item += 1
    
    for m in test:
        print(m)
        break
    输出:你
    for m in test:
        continue
        print(m)
    输出:

    三、切片

    test = "你怕是个小傻子吧"
    v = test[0:5]#从第0位取到第4位
    v = test[0:-1]#-1代表取到倒数第二位
    print(v)
    你怕是个小
    你怕是个小傻子

    四、获取长度 

    #python3,获取当前字符串中由几个字符组成
    test = "你怕是个小傻子吧"
    v = len(test)
    print(v)

    五、获取连续或不连续的数字

    #可设置步长,取不连续的数     
    v = range(1,100,5)#步长为5,每5个数取一次 v = range(100,0,-5)从后往前,每次减5
    for item in v:
      print(item)
    1,5,10,15,20......
    练习题:根据用户输入的值,输出每一个字符以及当前字符所在的索引位置
    test = input("...")
    l = len(test)             #计算用户输入字符串长度
    for item in range(0,l):   #让item在字符串长度中循环,即索引位置
        print(item,test[item])#用test[]的表示方法表示出在 item 位置的字符  

    # 字符串一旦创建,不可修改
    # 一旦修改或者拼接,系统都会重新生成字符串,不会在源字符串中添加等操作。

    列表list:

    1、列表格式:

    li = [1,8,888,"test",["harvey", "你是猪",["18",8],"康师傅"],"qwer",True]

    2、列表中可以嵌套任意类型

    3、索引取值

    print(li[3])

    test

    4、切片

    print(li[4:-1])
    [["harvey", "你是猪",["18",8],"康师傅"],"qwer"]

    5、for循环,while循环

    6、删除(del),结合切片或索引

    del li[4:-2]
    del li[4]
    print(li)
    [1,8,888,'test','qwer',True]

    7、修改,结合切片或索引

    li[1] = 120
    li[1:2]
    print(li)
    [1,120,888,["harvey", "你是猪",["18",8],"康师傅"],True]

    8、判断是否有某一字符串(in的用法)

    li = [1,8,888,"harvey",["今麦郎",["19",8],"康师傅"],"qwer"]
    v = "今麦郎" in li
    print(v)
    False

     9、取值

    li = [1,8,888,"harvey",["今麦郎",["19",8],"康师傅"],"qwer"]
    #取"9"
    print(li[4][1][0][1])
    #字符串转换为列表
    #转换为列表类型时,系统会用for循环每一个元素,int类型不能被for循环,故不能通过此方法转换为list
    new_li = list(li)

     10、转换

    #将列表转换成字符串
    #当列表中有数字时
    li = [123,465,"123","harvey"]
    s = ""
    for i in li:
        s = s + str(i)
    print(s)
    123465123harvey
    #当列表中只有字符串时
    li = ["123","456","harvey"]
    v = "".join(li)
    print(v)
    #添加
    -append
    -extend 他的参数必须为可迭代对象,内部要进行for循环
    li = [12,34,56,78,56]
    li.append(["猴哥猴哥""你真了不得"])
    print(li)
    [12, 34, 56, 78, 56, ['猴哥猴哥', '你真了不得']]
    
    li.extend(["猴哥猴哥","你真了不得"])
    li.extend("了不得")
    print(li) [12,34,56,78,56,"猴哥猴哥","你真了不得"]
    [12,34,56,78,56,'不','得','了']
    #清除
    -clear
    li = [12,23,45,56]
    li.clear()
    print(li)
    []
    #浅拷贝
    -copy
    li = [12,34,56]
    li.copy()
    print(li)
    [12,34,56]
    #计算某元素出现次数
    -count
    li = [12,23,45,56,12]
    li.count(12)
    print(li)
    2
    #获取当前值索引位置(从左到右,只获取第一个)可设置起始位置
    -index
    li = [12,22,33,22,44]
    v = li.index(22,2,4)
    print(v)
    3
    #插值
    -insert
    li = [12,22,33,22,44]
    li.insert(想插入的位置,想插入的值)
    print(li)
    #删除一个值,通过索引指定,默认删除最后一个,也可获取删除的值
    -pop
    li = [12,22,33,22,44]
    v = li.pop(1)
    print(li)
    print(v)
    [12,33,22,44]
    22
    
    #删除一个指定值,左边优先
    -remove
    li = [12,22,33,22,44]
    v = li.remove(22)
    print(li)
    li = [12,33,22,44]
    (上面还有del)
    #将当前列表反转
    -reverse
    li = [12,22,33,22,44]
    li.reverse()
    print(li)
    [44,22,33,22,12]
    #给列表排序,从小到大或从大到小
    -sort
    li = [12,22,33,22,44]
    li.sort()
    print(li)
    [12,22,22,33,44]
    
    li.sort(reverse = True)
    print(li)
    [44, 33, 22, 22, 12]

    元组 tuple:

    1、元素一级不可被修改,不能增加或删除,但元组中嵌套列表,则可以,例如:

    tu =(123,"harey",[(33,44)],(8,9),"今麦郎",True,)
    tu[2] = 8
    print(tu) #报错
    
    tu[2][0] = 8
    print(tu) 
    (123, 'harey', [8], (8, 9), '今麦郎', True)
    
    tu[2][0][0] = 8
    print(tu) #报错,因为(33,44)仍是元组

    2、一般在元组最后加“,”,以区分其他类

    tu =(123,"harey",[(33,44)],(8,9),"今麦郎",True,)

    3、索引

    v = tu[0]

    print(v)

    123

    4、切片

    v = tu[0:2]

    print(v)

    5、可被for循环,为可迭代对象(join,extend)

    for item in tu:

      print(item)

    6、转换

    字符串,列表,元组可相互转换

    s = tuple(s),li = tuple(li)

    #获取某一元素出现次数
    -count
    #寻找某一元素,可指定起始索引位置与结束索引位置
    -index

    字典 dict:

    1、基本结构:

    {“k1”:v1 , "k2":v2 , "k3":v3}#键 值 对,key不能重复,否则只打印一个,布尔值视为1,0,注意不要重复

    2、字典的value可以是任意值

    info = {"k1":23 , "k2":True , "k3":[23 , [] , () , {"kk1":'vv1' , "kk2":'vv2'' , "kk2":(88,89)} ] , "k4":(88,89,90)}

    3、列表,字典不能作为字典的key,因为他们都可以修改。

    4、字典无序(每次打印结果会不同)

    5、索引,不可切片,因为字典为无序

    info = {"k1":23 , "k2":True , "k3":[23 , [] , () , {"kk1":'vv1' , "kk2":'vv2'' , "kk3":(88,89)} ] , "k4":(88,89,90)}

    找到88:

    v = info["k3"][3]["kk3"][0]

    print(v)

    6、删除del

    info = {"k1":23 , "k2":True , "k3":[23 , [] , () , {"kk1":'vv1' , "kk2":'vv2' , "kk3":(88,89)} ] , "k4":(88,89,90)}

    删除88:

    del info["k3"][3]["kk3"][0]

    print(info)

    7、for循环

    info = {"k1":23 , "k2":True , "k3":[23 , [] , () , {"kk1":'vv1' , "kk2":'vv2' , "kk3":(88,89)} ] , "k4":(88,89,90)}
    for item in info:
      print(item)
    k1
    k2
    k3
    k4
    for item in info.keys():
        print(item)
    k1
    k2
    k3
    k4
    for item in info.values():
       print(item)
    23
    True
    [23, [], (), {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (88, 89)}]
    (88, 89, 90)
    for item in info:
        print(item,info[item])
    k1 23
    k2 True
    k3 [23, [], (), {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (88, 89)}]
    k4 (88, 89, 90)
    #最标准方式
    for k,v in info.items():
        print(k,v)
    k1 23
    k2 True
    k3 [23, [], (), {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (88, 89)}]
    k4 (88, 89, 90)

     8、根据序列创建字典,并可设置统一值,不设置则默认为None

    -formkeys

    v = dict.fromkeys([k1,132,"888"])
    print(v)
    {'k1': None, 132: None, '888': None}
    
    v = dict.fromkeys(["k1",132,"888"],666)
    print(v)
    {'k1': 666, 132: 666, '888': 666}

     9、根据key获取value

    dic = {"k1":v2 , "k2":v2}
    #索引,不存在时会报错
    v = dic["k1"]
    print(v)
    v2
    v = dic["k6"]
    #报错
    
    #key不存在时,可以指定默认值(None)
    -get
    v = dic.get("v6",6)
    print(v)
    6

    10、删除

    #指定某一个key删除
    #
    可获取被删除的value -pop dic = {"k1":"v1" , "k2":"v2"} v = dic.pop("k1") print(dic,v) {'k2': 'v2'} v1 #若删除的k不存在,则输出默认值(None),或指定值 v = dic.pop("k6",6) print(dic,v) {"k1":"v2" , "k2":"v2"} 6
    #随机删除一个,不可传参数
    -popitem
    dic = {"k1":"v1" , "k2":"v2"}
    k,v = dic.popitem()
    print(dic,k,v)
    {'k1': 'v1'} k2 v2

    11、设置值

    #若指定的key已经存在,则获取该值
    -stdefault
    dic = {"k1":"v1" , "k2":"v2"}
    v = dic.setdefault("k1",123)
    print(dic,v)
    {'k1': 'v1', 'k2': 'v2'} v1
    #若不存在,则添加指定的key,可设置value,没有则默认
    v = dic.setdefault("k6",123)
    print(dic,v)
    {'k1': 'v1', 'k2': 'v2', 'k6': 123} 123

    12、更新

    #存在则修改,不存在则添加,两种表达方式
    -update
    dic = {"k1":"v1" , "k2":"v2"}
    v = dic.update({"k1":'888',"k6":123})
    v = dic.update(k1 = '888',k6 = 123)
    print(dic)
    {'k1': '888', 'k2': 'v2', 'k6': 123}

    重点:keys,value,items,get,update

  • 相关阅读:
    PAT B1045 快速排序 (25 分)
    PAT B1042 字符统计 (20 分)
    PAT B1040 有几个PAT (25 分)
    PAT B1035 插入与归并 (25 分)
    PAT B1034 有理数四则运算 (20 分)
    PAT B1033 旧键盘打字 (20 分)
    HDU 1231 最大连续子序列
    HDU 1166 敌兵布阵
    HDU 1715 大菲波数
    HDU 1016 Prime Ring Problem
  • 原文地址:https://www.cnblogs.com/harvey0414/p/9368130.html
Copyright © 2011-2022 走看看