zoukankan      html  css  js  c++  java
  • 基本数据类型及内置方法

    一整形int

    基本使用========
    2 定义方式
    age = 18
    int功能可以把纯数字的字符串转成int类型

    res = int("18")
    res= int("1.8")
    print(type(res))
    

    了解

    print(bin(11))二进制
    print(oct(11))八进制
    print(hex(11))十六进制
    

    3,常用操作加内置方法
    算数运算符与比较运算
    二:浮点型float
    该类型总结===

    3,常用操作加内置方法
    算数运算符与比较运算

    二:浮点型float

    该类型总结===

    1,用途:薪资丶身高 体重
    2,定义方式
    salary = 3.1
    float功能可以吧浮点数组成的字符串转成float类型

    res = float("1.8")
    print(type(res))
    

    3,常用操作加内置方法
    算数运算符与比较运算

    =该类型总结====
    存一个值
    不可变

    三 字符串类型

    基本使用
    2,定义方式:在引号("",'',"""""")内包含一段字符串
    s = "helloo"
    str功能可以把任意类型转换成str类型

    res = str([1,2,3])
    print(type(res))
    

    3,常用操作加内置方法
    ==================>优先掌握的操作

    1.按索引取值(正向取值加反向取值):只能取

    s = "hello world"
    print(s[0],type(s[0]))
    print(s[-1])
    
    s[1] = "E"  # 不能修改
    
    非法操作
    s[2222]
    s[11] = "A"
    

    2、切片(顾头不顾尾,步长)=>属于拷贝操作

    s = "hello world"
    new_s=s[1:7]
    print(new_s)
    print(s)
    
    new_s=s[1:7:2]  #1 3 5
    print(new_s)
    print(s)
    
    new_s=s[:7:2]
    new_s=s[::2]  # 0 2 4 6 8 10
                  h l o w r  d
    print(new_s)
    
    new_s=s[::]  # 完整拷贝字符串,只留一个冒号就可以new_s=s[:]
    print(new_s)
    

    3、长度len

    s = "hello world"
    print(len(s))
    
    res=print("sfd")
    print(res)
    

    4、成员运算in和not in

    s = "hello world"

    # print("hel" in s)
    
    print("egon" not in s) # 语义明确,推荐使用
    
    # print(not "egon" in s)
    

    5、移除空白strip

    s = " 
            hel lo  	 "
    new_s = s.strip()
    print(new_s)
    print(s)  # 没有改变原字符串
    

    应用案列:

    name = input("your name>>> ").strip()  # name = "egon "
    pwd = input("your pwd>>> ").strip()
    
    if name == "egon" and pwd == "123":
        print('login successful')
    else:
        print('user or password error')
    
    
    去除左右两边的非空白字符
    print("**+=-%^#****he**llo**%^#**+=**".strip("*+=-%^#"))
    

    6、切分split:把字符串按照某个分隔符切成一个列表

    userinfo = "egon_dsb:123:18:3.1"
    res = userinfo.split(":")
    
    # print(res[0])
    
    print(res)
    print("-".join(res))
    
    纯字符串组成的列表
    l = ["aaaa", "bbb", "ccc"]
    
    # res=l[0]+":"+l[1]+":"+l[2]
    
    res = ":".join(l)
    print(res, type(res))
    

    7、循环

    for i in "hello":
        print(i)
    

    =======================>需要掌握的操作:

    1、strip,lstrip,rstrip
    print("***hello***".strip("*"))
    print("***hello***".lstrip("*"))
    print("***hello***".rstrip("*"))
    
    2、lower,upper
    msg = "AbCDEFGhigklmn"
    res = msg.lower()
    res = msg.upper()
    print(res)
    
    res=msg.swapcase()
    print(res)
    
    3、startswith,endswith
    msg = "sb is lxx sb"
    print(msg.startswith("sb"))
    print(msg.endswith("b"))
    print(msg.endswith("c"))
    
    4、split,rsplit
    userinfo="egon:123:18"
    
    # print(userinfo.split(":"))
    
    print(userinfo.split(":",1))
    print(userinfo.rsplit(":",1))
    
    5、format的三种玩法

    5.1 %s的方式

    name = "egon"
    age = 18
    res1="my name is %s my age is %s" % (name,age)
    print(res1)
    

    5.2 format的方式

    name = "egon"
    age = 18
    res1="my name is {} my age is {}".format(name,age)
    res1="{0}{0}{0}{1}".format(name,age)
    res1="my name is {name} my age is {age}".format(age=18,name="egon")
    print(res1)
    

    5.3 f''

    name = "egon"
    age = 18
    res1 = f"my name is {name} my age is {age}"
    print(res1)
    
    
    了解:f搭配{}可以执行字符串中的代码
    res=f'{len("hello")}'
    print(res)
    
    f'{print("hello")}'
    
    f包含的字符串可以放到多行
    name = "egon"
    age = 18
    res1 = f"my name is {name} " 
           f"my age is {age}"
    
    {}内不能有以及#
    print(f'my name is {{egon}}')
    
    print('胜率是 %s%%' %70)
    

    了解:https://zhuanlan.zhihu.com/p/110406030

    6、replace
    msg = "***egon hello***"
    res=msg.replace('*','').replace(' ','')
    res=msg.strip('*').replace(' ','')
    print(res)
    s="lxx hahah wocale lxx sb 666"
    
    # res=s.replace('lxx','sb')
    
    res=s.replace('lxx','sb',1)
    print(res
    print(s)
    
    7、isdigit:判断字符串是否由纯数字组成
    print("adsf123".isdigit())
    print("123".isdigit())
    print("12.3".isdigit())
    
    age = input('>>>: ') # age = "        18     "
    if age.isdigit():
        age=int(age)
        if age > 18:
            print('猜大了')
        elif age < 18:
            print('猜小了')
        else:
            print('猜对了')
    else:
        print('必须输入数字,小垃圾')
    

    了解操作:

    1.find,rfind,index,rindex,count

    1.1 find:从指定范围内查找子字符串的起始索引,找得到则返回数字1,找不到则返回-1

    msg='tony say hello'
    msg.find('o',1,3) # 在索引为1和2(顾头不顾尾)的字符中查找字符o的索引
    1
    1.2 index:同find,但在找不到时会报错

    msg.index('e',2,4) # 报错ValueError
    1.3 rfind与rindex:略
    1.4 count:统计字符串在大字符串中出现的次数

    msg = "hello everyone"
    msg.count('e') # 统计字符串e出现的次数
    4

    msg.count('e',1,6) # 字符串e在索引1~5范围内出现的次数
    1

    2.center,ljust,rjust,zfill

    name='tony'
    name.center(30,'-') # 总宽度为30,字符串居中显示,不够用-填充
    -------------tony-------------

    name.ljust(30,'') # 总宽度为30,字符串左对齐显示,不够用填充
    tony**************************

    name.rjust(30,'') # 总宽度为30,字符串右对齐显示,不够用填充
    **************************tony

    name.zfill(50) # 总宽度为50,字符串右对齐显示,不够用0填充
    0000000000000000000000000000000000000000000000tony

    3.expandtabs

    name = 'tony hello' # 表示制表符(tab键)
    name
    tony hello

    name.expandtabs(1) # 修改 制表符代表的空格数
    tony hello

    4.captalize,swapcase,title

    4.1 captalize:首字母大写

    message = 'hello everyone nice to meet you!'
    message.capitalize()
    Hello everyone nice to meet you!
    4.2 swapcase:大小写翻转

    message1 = 'Hi girl, I want make friends with you!'
    message1.swapcase()
    hI GIRL, i WANT MAKE FRIENDS WITH YOU!
    4.3 title:每个单词的首字母大写

    msg = 'dear my friend i miss you very much'
    msg.title()
    Dear My Friend I Miss You Very Much

    5.is数字系列

    在python3中
    num1 = b'4' #bytes
    num2 = u'4' #unicode,python3中无需加u就是unicode
    num3 = '四' #中文数字
    num4 = 'Ⅳ' #罗马数字

    isdigt:bytes,unicode

    num1.isdigit()
    True

    num2.isdigit()
    True

    num3.isdigit()
    False

    num4.isdigit()
    False

    isdecimal:uncicode(bytes类型无isdecimal方法)

    num2.isdecimal()
    True

    num3.isdecimal()
    False

    num4.isdecimal()
    False

    isnumberic:unicode,中文数字,罗马数字(bytes类型无isnumberic方法)

    num2.isnumeric()
    True

    num3.isnumeric()
    True

    num4.isnumeric()
    True

    三者不能判断浮点数

    num5 = '4.3'
    num5.isdigit()
    False

    num5.isdecimal()
    False

    num5.isnumeric()
    False

    '''
    总结:
    最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
    如果要判断中文数字或罗马数字,则需要用到isnumeric。
    '''

    6.is其他

    name = 'tony123'
    name.isalnum() #字符串中既可以包含数字也可以包含字母
    True
    name.isalpha() #字符串中只包含字母
    False
    name.isidentifier()
    True
    name.islower() # 字符串是否是纯小写
    True
    name.isupper() # 字符串是否是纯大写
    False
    name.isspace() # 字符串是否全是空格
    False
    name.istitle() # 字符串中的单词首字母是否都是大写
    False

    =该类型总结==
    存一个值
    有序
    不可变

    四 列表

    4.1定义:在[]号内用逗号分隔开多个任意类型的值

    l1 = [111,222,"aaa",[55,66]] # 本质l1 = list([111,222,"aaa",[55,66]])

    4.2类型转换:但凡能够被for循环遍历的数据类型都可以传给list()转换成列表类型,

    list()
    if 会跟for循环一样遍历出数据类型中包含的每一个元素然后放到列表中:

    list("aabbcc")
    ['a', 'a', 'b', 'b', 'c', 'c']
    list([1, 2, 3])
    [1, 2, 3]
    list({"name": "liu", "age": 18})
    ['name', 'age']
    list((1, 2, 3))
    [1, 2, 3]
    list({1, 2, 3, 4})
    [1, 2, 3, 4]
    

    4.3使用

    4.3 优先掌握的操作

    1.按索引位置存取值(正向存取,反向c存取):既可以存也可以取
    正向取:(从左到右)
    my_friends = ["tony","jason","tom",1,2]
    my_friends[0] # tony
    
    反向取(负号从右往左)
    my_friends[-1] # 2
    
    if对于list来说, 既可以按照索引取值, 又可以按照索引修改指定位置的值, 但是索引位置不存在则会报错:
    my_friends = ["tony","jason","tom",1,2]
    my_friends[1] = "liu"
    my_frieds[9] # 报错
    
    2.切片(顾头不顾尾,步长)

    2.1切片顾头不顾尾:取出索引为0到3的元素

    my_friends = ["tony","jason","tom",1,2]
    my_friends[0:4]
    ['tony', 'jason', 'tom', 1]
    

    2.2 步长:0:4:2,第三个参数2代表步长,会从0开始,每次累加一个2即可,所以会取出索引0、2的元素

    2.2 步长:0:4:2,第三个参数2代表步长,会从0开始,每次累加一个2即可,所以会取出索引0、2的元素

    my_friends[0:4:2]
    ['tony', 'tom']
    
    3.长度
    len(my_friends)
    5
    
    4.成员运算in和 not in
    'tony' in my_friends
    True
    "tony" not in my_friends
    False
    "xxxx" not in my_friends
    True
    
    5.添加

    5.1append()列表尾部追加元素

    l1 = [11,22,33,44,55]
    l1.append("a")
    l1
    [11, 22, 33, 44, 55, 'a']
    

    5.2.extend()一次性在列表尾部添加多个元素

    l1.extend(["aa","bb",99])
    [11, 22, 33, 44, 55, 'a', 'aa', 'bb', 99]
    
    l1.insert(22,111)
    

    5.3.insert()在指定位置插入元素

    5.3.insert()在指定位置插入元素

    6.删除:

    del万能删除法

    L= [11,22,33,44]
    del l[0]
    l
    [22,33,44]
    

    pop()默认删除列表最后一个元素,并将删除的值返回,括号内可以通过加索引值来指定删除元素

    l = [11,22,333,44]
    res = l.pop()
    res
    44
    res = l.pop()
    res
    333
    

    remove()括号内指名道姓表示要删除那个元素,没有返回值

    l = [11,22,33,44]
    res = l.remove(22)
    print(res)
    None
    
    7.reverse()颠倒列表内元素顺序
    l = [11,22,33,44]
    l.reverse()
    [44, 33, 22, 11]
    
    8.sort()给列表内所有元素排序

    排序是列表元素之间必须是相同的数据类型,不可混搭,不然报错

    l = [11,22,3,42,7,55]
    l.sort()
    l
    [3, 7, 11, 22, 42, 55]  # 默认从小到大排序
    l = [11,22,3,42,7,55]
    l.sort(reverse=True)  # reverse用来指定是否跌倒排序,默认为False
    l
    [55, 42, 22, 11, 7, 3]
    

    通过索引取值实现列表翻转

    l[::-1]
    [55, 42, 22, 11, 7, 3]
    

    了解知识:
    我们常用的数字类型直接比较大小,但其实,字符串、列表等都可以比较大小,原理相同:都是依次比较对应位置的元素的大小,如果分出大小,则无需比较下一个元素,比如

    l1=[1,2,3]
    l2=[2,]
    l2 > l1
    True
    

    字符之间的大小取决于它们在ASCII表中的先后顺序,越往后越大

    字符之间的大小取决于它们在ASCII表中的先后顺序,越往后越大

    s1='abc'
    s2='az'
    s2 > s1 # s1与s2的第一个字符没有分出胜负,但第二个字符'z'>'b',所以s2>s1成立
    True
    

    所以我们也可以对下面这个列表排序

    所以我们也可以对下面这个列表排序

    l = ['A','z','adjk','hello','hea']
    l.sort()
    l
    ['A', 'adjk', 'hea', 'hello','z']
    
    9.循环

    循环遍历my_friends列表里面的值

    for line in my_friends:
        print(line)
    'tony'
    'jack'
    'jason'
    4
    5
    

    ====该类型总结=
    存多个值
    有序
    可变

    五:元祖

    5.1作用

    元祖与列表类似,也是可以存多个任意类型的元素,不同之处是元祖的元素不可以改,
    即元祖相当于不可变列表,用于记录多个固定不允许修改的值,单纯用于取.
    元祖就是一个不可变的列表
    用途:按照索引位置存放多个任意类型的值,索引反应的是位置/顺序
    定义方式:在()内用逗号分隔开多个任意类型的值/元素
    t = (10)
    print(type(t))
    强调:当元祖内只有一个元素时,必必须加括号

    t = (10,)
    print(type(t))
    
    t = (11,22,"aa",10.1,[11,22])
    print(t[-1][0])
    t[0] = 111 # 不能改
    t[-1] = 333 # 不能改
    t=(11,22,[33,44])
    print(id(t[0]),id(t[1]),id(t[2]))
    
    t[2][0]=333333333
    
    # print(t)
    
    print(id(t[0]),id(t[1]),id(t[2]))
    
    t=(11,22)  # t=tuple(...)
    print(type(t))
    

    类型转换

    tuple(所有可以被for循环遍历的类型)
    t = ()
    print(t)
    print(type(t))
    
    
    

    常用操作加内置方法
    优先掌握的操作:

    1.按照索引取值(正向取加反向取):只能取
    t = (10,1.1,"aaa",[11,33])
    print(t[0])
    
    2.切片顾头不顾尾
    t = (11,22,33,44,55)
    print(t[0:3])
    
    3.len长度
    t = (11,22,33,44,55)
    print(len(t))
    
    4.成员运算 in 和 not in
    t = (11,22,33,44,55)
    print(11 in t)
    

    5 循环

    for x in t:
       print(x)
    

    ====该类型总结=

    存多个值
    有序
    不可变

    六字典类型

    1.用途:

    按key:value的形式存放多个任意类型的value,key反应的是value的属性

    2.定义方式:

    在{}内用逗号分给开多个key:value,其中value可以是任意类型
    而key必须是不可变类型,通常是字符串类型

    d = {"k1":111,"k2":222,"k3":333} # key重复,只保留一个
    print(d)
    
    d = {1:"aaa",2.1:"bbb",[2,3]:"ccc"}
    print(type(d))
    print(d[()])
    

    类型转换

    类型转换

    l = [("name","egon"),("age",18),["gender","male"]]
    
    res = dict(l)
    print(res)
    
    d=dict(x=1,y=2,c=3)
    print(d)
    

    空字典

    d = {}
    print(type(d))
    
    快速格式化字典
    dic = {}.fromkeys(["name","age","gender"],None)
    dic = {}.fromkeys("hello",None)
    print(dic)
    
    3.常用操作加内置方法

    优先掌握的操作:

    1.按key存取值:可存可取
    d = {"k1":111}
    print(d['k1'])
    d['k2'] = 22
    print(d)
    
    2.长度 len()
    d = {"k1":111,"k2":222}
    print(len(d))
    
    3.成员运算in和not in
    d = {"k1":111,"k2":222}
    print("k1"in d)
    print(11 in d)
    
    4、删除

    d={'k1':111,'k2':222}
    万能删除,没有返回值,代表的是单纯的删除

    del d['k1']
    print(d)
    

    随机删,返回一个元组

    res=d.popitem()
    print(d)
    print(res)
    

    指定key删除,有返回值,代表的是取走操作

    res=d.pop('k1')
    print(d)
    print(res)
    
    5.键keys(),值values(),键值对items()
    d={'k1':111,'k2':222}
    d.keys()
    ['k2', 'k1']
    d.values()
    [222, 111]
    d.items()
    [('k2', 222), ('k1', 111)]
    
    6、循环
    d={'k1':111,'k2':222}
    for k in d:
        print(k)
    
    for v in d.values():
        print(v)
    
    for k,v in d.items():
        print(k,v)
    
    keys=[]
    for k in d:
        keys.append(k)
    
    keys=list(d.keys())
    print(keys)
    
    1.get方法
    res = d.get('username')
    print(res)  # jason
    res = d.get('xxx')  # 找不到不会报错 会返回None
    res = d.get('username',"没有这个key")  # 键存在返回对应值
    res = d.get('xxx','没有这个key')  # 不存在返回get里的第二个参数
    
    字典新增键值对
    方式1
    d['hobby'] = 'study'  #字典的key不存在新增
    print(d)
    d['username'] = 'egon'
    print(d) # 字典的key存在则修改
    方式2
    d.update(username = 'jason')
    print(d)  # 特点同上
    方式3
    """
    键如果存在的情况下 name不做修改 而是将对应的value取出
    键如果不存在的情况下 那么就是新增
    """
    d.setdefault('xxx',123)
    print(d)  # 键不存在是新增
    res = d.setdefault('username',123)
    print(d)  # {'username':'jason','password':123}
    print(res) #jason
    

    快速构造字典

    res = {}.fromkeys(["k1","k2","k3"],[])
    print(res)  # {'k1': [], 'k2': [], 'k3': []}
    res.get("k1").append(123)
    """
    A
    {'k1': [123], 'k2': [], 'k3': []}
    B
    {'k1': [123], 'k2': [123], 'k3': [123]} # 对
    C
    报错
    D
    我TMD的也不知道
    """
    

    弹出

    res = d.pop('username')
    print(d,res)  # jason
    res1 = d.popitem()  #将弹出的键值对组织成元祖的形式返回出去
    print(d,res1)  # {'username':'jason',('password','123')}
    

    字典三剑客

    print(d.keys())  # 获取字典所有的key
    print(d.values())  # 获取字典所有的value
    print(d.items())    # 获取字典所有的key和value组织成小元组
    
    """
    可以直接只看里面的数据结构
    dict_keys(['username','password'])
    dict_values(['jason',123])
    dict_items([('username','jason'),('password',123)])
    """
    for key in d.keys():
    	print(key)
    for value in d.values():
    	print(value)
    for item in d.items():
    	print(item)
    for k,v in d.items():
    	print(k,v)
    

    清空

    d.clear()
    print(d)
    

    七 集合set

    作用:

    1,去重

    ​ 集合内不可能出现相同的元素

    2.关系运算

    共同好友,共同关注...
    用集合就是用上面两个功能 如果都用不上 那么就不要用
    定义
    s = {1,2,3,4,5,6,7,8}
    """
    1.集合内元素必须是不可变类型
    2.元素与元素之间逗号分隔开 不是键值对
    3.集合内的元素也是无序的
    """
    如何定义空集合

    s1 = {}
    s2 = {}
    print(type(s1),type(s2))  # <class 'dict'> <class 'dict'>
    定义一个空集合一定要用set关键字
    s = set{}
    print(s,type(s))  # set() <class 'set'>
    

    类型转换:
    能够被for循环的数据类型都能被转成集合

    s1 = set('egon is o DSB')
    print(s1)
    s2 = set([1,2,3,4,5,6,6,6,6,6])
    print(s2)
    s3 = set({'username':'jason','password':123})
    print(s3)  # {'password','username'}
    

    去重

    s = {1,1,2,2,3,3,3,3,8,8,88,}
    print(s)  # 集合内如果有元素相同会自动去重
    

    去重练习题
    l = [4,2,2,2,33,33,4,5,6,6,77,77]

    要求1 对列表进行去重不需要保持原来的元素顺序
    先转成集合
    s = set(1)
    再转成列表
    l1 = list(s)
    print(l1)
    要求2 对列表去重之后需要保持原来的元素顺序
    new_l = []
    for i in s:
    	if i not in new_l:
    		new_l.append(i)
    print(new_l)
    

    关系运算

    用户1的好友列表
    friends1 = {'jason','tank','egon','jerry'}
    用户2的好友列表
    friends2 = {'jason','tony','owen','oscar'}
    
    1.求两个用户的共同好友  交集
    res = friends1 & friends2
    print(res)
    2.求两个用户所有的好友
    res = friends1 | friends2
    print(res)
    3.用户1独有的好友
    res1 = friends1 - friends2
    res2 = friends2 - friends1
    print(res1,res2)  # {'jerry', 'tank'} {'owen', 'oscar'}
    4 求两个用户各自独有的好友            对称差集
    res = friends1 ^ friends2
    print(res)  # {'owen', 'jerry', 'tank', 'oscar'}
    

    5 子集 父集

    s1 = {12,3,4,5,6}
    s2 = {12,6}
    print(s1 > s2)  # s1是否是s2的父集
    print(s2 < s1)  # s2是否是s1的子集
    
  • 相关阅读:
    2020 CCPC-Wannafly Winter Camp Day6 ---I. 变大!
    Codeforces 1295F Good Contest
    2020 CCPC-Wannafly Winter Camp Day6 ---A. Convolution
    centos下kubernetes+flannel部署(旧)
    无网络centos7中部署kubernetes
    利用Openvswitch实现不同物理机中的Docker容器互连
    docker-py的配置与使用
    通过Docker配置DNS服务器
    在 OS X Yosemite 中部署Mesos
    Docker初识
  • 原文地址:https://www.cnblogs.com/lgh8023/p/13294101.html
Copyright © 2011-2022 走看看