• Python基础 之 int、bool、str、列表、元组、字典


    数据类型

    数据类型划分:可变数据类型     不可变数据类型

    不可变数据类型:元组、bool、int (本身不可更改)、str      (可哈希)

    可变数据类型:列表list、字典dict   、集合set                        (不可哈希)

    注意:集合为不可变类型,但是集合元素可变

    一、Int

    int   1,2,3...    用于计算

    print(i.bit_length())      #求二进制最小位数

    例如:

    i=7
    print(i.bit_length())

    二、Bool

    只有两种结果:True   False

    int----->str                    str(int)

    str----->int                    int(str)        注意:字符串必须为数字

    int----->bool                  非零转换为bool为True,反之则为False

    bool---->int                   只有两种结果,真为1,假为0;

    str-------bool    

    s=" "   -------False         空字符串则为False

    s="0"--------True           非空字符串都为True

    相比

    while  True:

          pass

    还有一种方法更有效率:

    while 1:

        pass

    三、字符串str

    1、字符串的索引

    s='ASDFGHJKL'
    s1=s[3]
    print(s1)

    结果为:F

    注意:对字符串进行操作否会形成新的字符串,对原字符串没有影响。

    2、字符串的切片

    s='ASDFGHJKL'
    s1=s[0]
    s2=s[0:4]
    s3=s[-1]
    s4=s[-2]
    s5=s[0:]
    s6=s[:]
    s7=s[0:0]
    s8=s[1:5:2]
    s9=s[0:4:-1]
    s10=s[3::-1]
    s11=s[3::-2]
    s12=s[-1::-1]
    s13=s[::-1]

    3、字符串的操作

    s="alex wusir"
    s1=s.capitalize()           #首字母大写
    
    s2=s.upper()               #全部大写
    
    s3=s.lower()              #全部小写
    

    下面看一个咱们常用的关于验证码的例子:

    s_str="acEQ"
    you_input=input("请输入验证码,不区分大小写")
    if s_str.upper()==you_input.upper():
        print("登录成功")
    else:
        print("验证码错误,请重新输入")

    继续看对字符串的操作:

    s4=s.swapcase()       #大小写翻转
    
    s5=s.title()          #每个隔开的单词,首字母大写(特殊字符或数字)
    
    s6=s.center(20,"#")   #居中,空白填充
    s7=s.expandtabs() #逢8补齐

    字符串有长度吗?答案是肯定的。咱们来看一下计算字符串长度的方法:

    s="alex wusir"
    i=len(s)          #计算字符串的长度
    print(i)

    注意:中间的空格也占一个长度单位。

    查看字符串开头和结尾的方法

    s="alex wusir"
    s1=s.startswith("alex")      #字符串是以...开头
    
    s2=s.endswith("sir")       #字符串是以...结尾

    查看字符在字符串中的索引位置:

    s1=s.find("w")     #返回w在字符串中的索引位置
    
    s2=s.find("ex")    #如果是多个,以第一个字母索引为准

    通过位置找索引

    s13=s.find("q")     #通过元素找索引,找不到返回-1
    
    s14=s.index("u")     #通过元素找索引,找不到报错

    删除字符串中空格或多余部分:

    s1=s.strip()          #默认删除空格
    
    
    a="*a%lex Wusir%"
    s2=a.strip("*%")    #删除前后相同内容
    print(s2)
    
    s="  alex wusir  "
    s3=s.strip()    #删除前后空格
    
    s4=s.rstrip()    #删除右边空格
    
    s5=s.lstrip()    #删除左边空格

    找出单个字符在字符串中的个数

    s="asdfgbnhfdsshjk"
    s1=s.count("s")      #输出字母s在字符串中的个数
    print(s1)

    字符串转化为列表

    s="alex wusir taibsi"    #字符串转化为列表
    y=s.split()
    print(y)

    4、格式化输出 format的三种方法

    s1="我叫{},今年{},爱好{},再说一遍我叫{}".format("高雅",22,"看电影","高雅")
    
    s2="我叫{0},今年{1},爱好{2},再说一遍我叫{0}".format("高雅",22,"看电影")
    
    s3="我叫{name},今年{age},爱好{hobby},再说一遍我叫{name}".format(name="高雅",age=22,hobby="看电影")

    5、replace 替换全部相同内容

    s="我在教室写代码,写代码真有趣!"
    r=s.replace("写代码","看书")
    print(r)         

    replace("旧","新")

    还可以加入替换的个数

    replace("旧","新",个数)

    6、for循环

    s="pycharm"
    for i in s:
        print(i)

     四、列表

    1、增

    有三种方法:append、insert、extend

    li=["alex","wusir","egon","女神","taibai"]
    
     l1=li.append("高雅")        #列表后面追加
    
     l2=li.insert(1,"丫丫")       #按照索引插入
    
     l3=li.extend("写代码")         #分解成最小元素添加

    l3输出结果:['alex', 'wusir', 'egon', '女神', 'taibai', '写', '代', '码']

    注意:int对象不能迭代;

              可迭代的是每个组成的元素

    例题:添加新员工姓名,按q退出

    li = ['alex','wusir','egon','女神','taibai']
    while True:
        name = input("新人姓名:")
        if name.upper()=="Q":
            break
        else:
            li.append(name)

    2、删

    四种方法:pop、remove、clear、del

    li=["alex","wusir","egon","女神","taibai"]
    l1=li.pop(1)               #按照索引删除元素
    print(l1,li)
    l2=li.pop()                #索引为空,默认删除最后一个
    
    l3=li.remove("高雅")       #按照元素删除
    
    l4=li.clear()             #清空列表(列表为空)
    
    del li                   #删除列表(列表消失)
    
    del li[2:]                #按照切片删除

    l1输出结果:女神 ['taibai', 'wusir', 'egon']

    注意:1)、pop()中,加入索引,唯一一个有返回值,索引为空,默认删除最后一个;

              2)、clear()方法,列表为空,但列表存在;

              3)、del方法,列表消失。

    3、改

    两种方法:按索引、按切片

    li=["alex","wusir","egon","女神","taibai"]
    li[0]="男神"               #按索引修改
    
    li[0]=[1,2,3]              #按索引修改为列表
    
    li[1:2]="yaya"              #按切片修改(切片所指内容删除,在此位置随机按照元素添加)
    li[1:2]="yaya"输出结果为:['alex', 'y', 'a', 'y', 'a', 'egon', '女神', 'taibai']

    注意:按切片修改只是把切片内容删除,在此位置添加输入内容,并且是以单个元素添加

    4、查

    两种方法:for循环、切片

    li=["alex","wusir","egon","女神","taibai"]
    
    for i in li:               #for循环查询
    
    print(li[0:2])              #按切片查

    5、排序

    li=[1,4,6,3,5,2,7,9]
    
    li.sort()                   #正向排序
    
    li.sort(reverse=True)      #反向排序
    
    li.reverse()              #反转

    注意:排序只能用于Int类型,否则报错

    6、列表的嵌套

    li=["taibai","丑小丫","高雅",["alex","egon",78],34]
    
    print(li[1][1])                   #
    
    print(li[0].capitalize())         #Taibai
    
    li[2]=li[2].replace("","")    #高雅变为高丫(好难听啊。。)
    print(li)
    
    li[3][0]=li[3][0].upper()         #ALEX
    print(li)

    五、元组

    只读列表,可循环查询,可切片。(儿子不能改,孙子可能可以改)

    tu=(1,2,3,"alex",[2,3,4],"egon")
    
    print(tu[3].upper())          #ALEX
    
    tu[4].append("taibai")       #内嵌列表中添加taibai
    print(tu)
    
    for i in tu:      #查询元祖中的每个元素
        print(i)
    
    print(tu[0:4])     #(1, 2, 3, 'alex')

    六、公共方法

    1、len( )    计算长度

    tu=(1,2,3,"alex",[2,3,4],"egon")
    l=len(tu)
    print(l)        #输出结果:6

    2、count( )   计算个数

    tu=(1,2,3,"alex",[2,3,4],"egon","alex")
    num=tu.count("alex")
    print(num)       #输出结果:2

    3、index( )   查询索引

    tu=(1,2,3,"alex",[2,3,4],"egon","alex")
    print(tu.index("egon"))   #输出结果:5

    七、Join

    join:列表转换为字符串

    那么字符串转换为列表是什么呢?之前讲过的,对了,就是split。

    s="alex"
    s1="_".join(s)       #用_连接
    print(s1)            #输出结果:a_l_e_x
    
    s2="*".join(s)      #用*连接
    print(s2)            #输出结果:a*l*e*x
    
    li=["alex","hello"]
    s3="".join(li)     #无缝连接
    print(s3)         #输出结果:alexhello

    注意:引号里面是啥,就用此连接,如果是空,就是无缝连接。

    八、Range

    相当于列表,但元素只能是数字。

    顾头不顾尾、0开头不用写、可以有步长

    range()放索引位置,可切片

    for i in range(10):
        print(i)             #输出结果:0,1,2,3,4,5,6,7,8,9
    
    for i in range(0,10,2):
        print(i)             #输出结果:0,2,4,6,8
    
    for i in range(10,0,-3):
        print(i)             #输出结果:10,7,4,1

    注意一下

    for i in range(0,10,-2):
        print(i)           #输出结果:

    输出结果为空,啥都没有。

    下面做一道题:让列表循环,当然里面的内嵌列表页要循环哦!

    li = [1,2,3,5,'alex',[2,3,4,5,'taibai'],'afds']
    #第一种方法:
    for i in li:
        if type(i)==list:
            for j in i:
                print(j)
        else:
            print(i)
    #第二种方法:
    for i in range(len(li)):
        if i==5:
            for j in li[i]:
                print(j)
        else:
            print(li[i])

     九、字典

    python 中唯一一个映射数据类型

    字典的key:必须是不可变数据类型

              value:任意数据类型

    字典dict优点:二分法查询

                          存储大量的关系型数据

                特点:无序(包括3.5级以前版本)

    1、增

    1)、直接添加

    dic1={"name":"jin","age":18,"sex":"male"}
    dic1["high"]=185           #没有键值对,直接添加
    
    dic1["age"]=16            #有键,则值覆盖
    print(dic1)

    2)、 setdafault 

    dic1.setdefault("weight")    #有键值对不做任何改变,没有才添加
    print(dic1)
    dic1.setdefault("weight",150)
    print(dic1)

    2、删

    1)、pop:  直接按照字典的键删除,有返回值

    dic1={"name":"jin","age":18,"sex":"male"}
    dic1.pop("age")     #有返回值,
    
    dic1.pop("high","没有")     #有则直接删除,没有则返回提示语
    print(dic1)

    2)、 popitem:随机删除,有返回值

    dic1.popitem()      #随机删除
    print(dic1)

    3)、clear:清空字典

    dic1.clear()      #清空字典
    print(dic1)

    4)、del:删除键值对,删除字典

    del dic1["name"]      #删除键值对,没有则报错
    print(dic1)
    del dic1["high"]
    print(dic1)
    del dic1     #删除字典

    3、改

    1)、直接通过字典的键修改

    dic1={"name":"jin","age":18,"sex":"male"}
    dic1["age"]=16         #键相同,值覆盖
    print(dic1)

    2)、update:更新字典

    dic2={"name":"alex","weight":75}
    dic2.update(dic1)       #原字典更新添加到旧字典,有键则值覆盖,无键则全添加
    print(dic2)

    4、查

    1)、通过keys、values、items查找

    dic1={"name":"jin","age":18,"sex":"male"}
    print(dic1.keys())   #字典的键
    print(dic1.values())   #字典的值
    print(dic1.items())    #字典的条目(以元组形式,键、值显示)

    2)、for循环

    for i in dic1:      #啥都不写,默认为键
        print(i)
    for i in dic1.keys():    #字典的键
        print(i)
    for i in dic1.values():   #字典的值
        print(i)
    for i in dic1.items():   #字典的条目
        print(i)
    for k,v in dic1.items():    #以键、值形式显示
        print(k,v)         

    3)、直接通过字典的键查询值

    print(dic1["name"])   #查找对应的值,找不到报错
    print(dic1["name1"])   #报错

    4)、get

    print(dic1.get("name"))   #查找对应的值,找不到返回none
    print(dic1.get("name1","None"))
    print(dic1.get("name1","没有这个值"))#查找对应的值,找不到则返回提示语

    5、字典dict嵌套

    dic={
        "name":["alex","wusir","taibai"],
        "py9":{
            "time":"1213",
            "learn_money":19800,
            "addr":"CBD"
        },
        "age":21
    }

    对上面列表进行操作:

    1)、将alex全部大写

    dic["name"][0]=dic["name"][0].upper()
    print(dic)

    2)、在name中添加yaya

    dic["name"].append("yaya")
    print(dic)

    3)、将年龄变为56

    dic["age"]=56
    print(dic)

    4)、在py9中添加键值对女生有6人

    dic["py9"]["female"]=6
    print(dic)
  • 相关阅读:
    python 输入和输出
    python 深入模块和包
    python 模块
    python 字典 注意点
    javaNIO核心概念
    redis使用bit做只有两种情况的“状态“统计(如是否在线的用户统计)
    mysqlbinlog二三事儿
    mysql在windows下的服务安装
    javassist标识符
    使用redis调用lua脚本的方式对接口进行限流
  • 原文地址:https://www.cnblogs.com/gaoya666/p/8059181.html
Copyright © 2020-2023  润新知