• python基础(五)


    今日内容概要:

    一、补充

    二、字符串及其操作(按需掌握程度)

    三、列表及其操作(按需掌握程度)

    内容详解:

    一、补充

    1、程序的运行就是一系列数据的变化。

    2、字符串是一个值,是不可分割的整体。

    3、数据类型int,str,list,tuple,dict,set的应用场景。

        int:年纪,等级,身份证号,qq号等整型数字相关
    str:名字,性别,国籍,地址等描述信息
    list:多个装备,多个爱好,多门课程,多个女朋友等
    tuple:存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读
    dict:存多个值,key-value存取,取值速度快
    set:去重,关系运算
    4、分类常用数据类型:数字、字符串,列表,元组,字典,集合。
       1)按照存值个数分类?
       存单个:数字、字符串
    存多个:列表、元组、字典、集合
       2)按照可变不可变类型分类?
        可变:列表、字典、可变集合
    不可变:数字、字符串、元组、不可变集合
    set —— 可变集合。集合中的元素可以动态的增加或删除。
    frozenset —— 不可变集合。集合中的元素不可改变。
    PS: 有一些工具,可以让无序的字典与集合变成有序的。

    3)按照取值方式分类(直接取值,按索引,按key取)?
        直接取:数字
    索引取:字符串、列表、元组
    key取: 字典

    4)按照有序无序分类?
        有序:字符串、列表、元组
    无序:字典、集合

    二、字符串及其操作(按需掌握程度)

    1、用途:记录描述性质的状态

    2、定义方式:在单引号、双引号、三引号内包含的一串字符
    msg = "[1,2,3]" # msg=str("[1,2,3]")

    数据类型转换:str可以把任意类型转换成字符串类型
    str([])

    3、常用操作+内置的方法
    # 优先掌握的操作:
    #  1、按索引取值(正向取+反向取) :只能取
    #  msg='hello你好'
    #  print(msg[0]) # 取出的由单一字符组成的str
    #  print(msg[5])
    #  print(msg[-1])
     
    #  l=[1111,222]
    #  l[0]=3333
    #  print(l)
    
    # msg="hello"
    # msg[0]="H"#报错,字符串为不可变类型
    
    # 2、切片(顾头不顾尾,步长)
    # msg = 'hello你好'
    # print(msg[1:6]) # ello你
    # print(msg)  #字符串不会变
    #
    # print(msg[1:6:1]) # 默认步长,1 2 3 4 5
    # print(msg[1:6:2]) # 默认步长,1 3 5
    #
    #
    # print(msg[:6:2]) # 省略起始位置,默认起始位置为0,打印出:hlo
    # print(msg[::2]) # 省略结束位置,默认一直到末尾全部都取到,打印出hlo好
    # print(msg[::]) # 省略步长,默认步长为1 ,打印出:hello你好
    # print(msg[:]) # 省略步长,默认步长为1,打印出:hello你好
    
    # 了解:
    # msg='hello你好'
    # # print(msg[0:5:1])#打印出来:hello
    # print(msg[0:5:-1])#打印出来空,因为前后取值矛盾
    # 方向需要保持一致才行
    # print(msg[-1:-5:-1]) # -1 -2 -3 -4
    #                  #打印出: 好  你  o  l
    # msg = 'hello你好'
    # print(msg[::-1]) # -1 打印出:好你olleh
    
    # 3、长度len
    # msg = 'hello 
    你好'
    # print(len(msg)) # 统计的是字符的个数,
    算一个字符,另外还有空格个数,总共为 9
    
    # 4、成员运算in和not in
    # msg = 'hello 你好'
    # print("你好" in  msg) #True
    # print("你好" not in msg) # 推荐使用 False
    # print(not "你好" in msg) # 不推荐使用 False
    
    # 5、移除空白strip
    # msg="      hello   "
    # res=msg.strip()
    # print(res)
    
    # msg="    	  
     hello   	"
    # res=msg.strip() # 默认去掉的是字符串左右两端的空白字符串
    # print(res)#只有hello,没有空格了
    #
    # msg="    	  
     he    llo   	"
    # res=msg.strip() # 默认去掉的是字符串左右两端的空白字符串
    # print(res)#打印出来he    llo
    #
    # msg="*()-=hello()*&#@!"
    # res=msg.strip("()*=-!&#@")
    # print(res) # 得到的是新字符串,没有改变原来的,打印出来hello
    # print(msg)#打印出来*()-=hello()*&#@!
    
    
    # user = input('用户名>>>: ').strip()  # 例如用户输入user="egon       "
    # password = input('密码>>>: ').strip()
    # if user == "egon" and password == "123":  #password属于字符串的123,而不是数字
    #     print('账号密码正确')
    # else:
    #     print("账号或密码输入错误")
    #
    # 6、切分split
    # msg="a:b:c:d"
    # res=msg.split(':')
    # print(res)#打印出来列表['a', 'b', 'c', 'd']
    #
    # msg="hello 你 好"
    # print(msg.split(' '))#打印出来列表['hello', '你', '好']
    #
    # # 把列表拼成一个str,列表中的元素必须全部为str类型
    # print(res)#打印出来['a', 'b', 'c', 'd']
    # print(":".join(res)) #a:b:c:d
    # print("-".join(res))#a-b-c-d
    # print("=".join(res))#a=b=c=d
    #
    # # 7、循环
    # for x in "hello 你好":
    #     print(x)#字符串类内容被依次打印出来
    # 需要掌握的操作
    # 1、strip,lstrip,rstrip
    # msg="*****hello*****"
    # print(msg.strip('*'))#hello
    # print(msg.lstrip('*'))#hello*****
    # print(msg.rstrip('*'))#*****hello
    # 2、lower,upper
    # msg="aABc你1"
    # print(msg.lower())#aabc你1
    # print(msg.upper())#AABC你1
    
    # 3、startswith,endswith
    # msg = "dsb lxx is sb"
    # print(msg.startswith("ds"))#True
    # print(msg.endswith("sb"))#True
    
    # 4、format的三种玩法
    # print("my name is %s %s" % ("egon",18))#my name is egon 18
    #
    # print("my name is {} {}".format("egon",18))#my name is egon 18
    # print("my name is {x} {y}".format(y=18,x="egon"))#my name is egon 18
    # print("my {1}name is {0} {0}{1}{1}".format("egon",18))#my 18name is egon egon1818
    #
    # x='egon'
    # y=18
    # print(f"=====>{x}===>{y}")   # =====>egon===>18
    
    
    # 5、split 从左至右进行过切分   rsplit从右至左进行过切分
    # print("egon:18:male:10".split(':',2))#['egon', '18', 'male:10']
    # print("egon:18:male:10".split(':',1))#['egon', '18:male:10']
    # print("egon:18:male:10".rsplit(':',1))#['egon:18:male', '10']
    #
    # # 6、join
    # #无
    # # 7、replace
    # msg="*()-=he       llo()*&#@!"
    # res=msg.strip("()*=-!&#@").replace(' ','')
    # print(res)
    #
    # print('my name is sb sb sb'.replace('sb','SB',1))#my name is SB sb sb
    
    # 8、isdigit判断是否为数字
    # age="18**** "
    # print(age.isdigit())#False
    # age="18   "
    # print(age.isdigit())#False
    # age="18"
    # print(age.isdigit())#True
    
    # 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
    # print("=abcdefab".find("ab")) # 查找一个子字符串在大字符串中出现的起始位置
    # print("=adcabdefab".find("ab",0,6)) # 查找一个子字符串在大字符串中出现的起始位置
    # print("=adcabdefab".rfind("ab")) # 查找一个子字符串在大字符串中出现的起始位置
    # print("====".index("ab")) # 找不到则报错,而find则会返回-1
    
    #2、center,ljust,rjust,zfill
    # print("egon".center(50,'*'))
    # print("egon".ljust(50,'*'))
    # print("egon".rjust(50,'*'))
    # print("egon".zfill(50))
    
    #3、expandtabs
    
    #4、captalize,swapcase,title
    # print("my name is egon".capitalize())
    # print("AbCd".swapcase())
    # print("my name is egon".title())
    
    #5、is数字系列
    #在python3中
    # num1=b'4' #bytes
    # num2=u'4' #unicode,python3中无需加u就是unicode
    # num3='四' #中文数字
    # num4='Ⅳ' #罗马数字
    
    
    # isdigit():用于b和u格式,即num1和num2
    # isdecimal():用于u格式,即num2
    # isnumberic():用于u,中文数字、罗马数字,即num2、num3、num4
    
    #isdigt:bytes,unicode
    # print(num1.isdigit()) #True
    # print(num2.isdigit()) #True
    # print(num3.isdigit()) #False
    # print(num4.isdigit()) #False
    
    #isdecimal:uncicode
    #bytes类型无isdecimal方法
    # print(num2.isdecimal()) #True
    # print(num3.isdecimal()) #False
    # print(num4.isdecimal()) #False
    
    #isnumberic:unicode,中文数字,罗马数字
    #bytes类型无isnumberic方法
    # print(num2.isnumeric()) #True
    # print(num3.isnumeric()) #True
    # print(num4.isnumeric()) #True
    
    #三者不能判断浮点数
    # num5='4.3'
    # print(num5.isdigit())
    # print(num5.isdecimal())
    # print(num5.isnumeric())
    
    #6、is其他
    # name='egon123'
    # print(name.isalnum()) #字符串由字母或数字组成
    # print(name.isalpha()) #字符串只由字母组成
    
    # name="====>inputasd" # "input" in name
    # print(name.isidentifier())
    
    # name="egon"
    # print(name.islower())
    # print(name.isupper())
    
    # name="       "
    # print(name.isspace())
    
    # name="My Name Is"
    # print(name.istitle())

    总结:

    存一个值or存多个值

    存一值

    有序or无序

    有序

    可变or不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)

    不可变

    三、列表及其操作(按需掌握程度)

    1、用途:按照位置存多个值

    2、定义方式:在[]内用逗号分隔开多个任意类型的值
    l = [111, 3.1, "abc", []] # l=list(...)
    print(type(l))
    # 类型转换
    list(传入的可以是任意能够被for循环遍历的类型)
    print(list("hello"))#['h', 'e', 'l', 'l', 'o']
    print(list(["a",'b']))#['a', 'b']
    print(list({"k1":11,'K2':222}))#['k1', 'K2']
    3、常用操作+内置的方法
    # 优先掌握的操作:
    # 1、按索引改、取值(正向存取+反向存取):即可改也可以取
    # l=[111,222,333,444,555]
    # l[0]=1231231231231231231
    # print(l)#[1231231231231231231, 222, 333, 444, 555]
    #
    # l[5]=666 # 超出索引范围则报错,即不能用这种赋值操作为列表增加值
    
    
    # 2、切片(顾头不顾尾,步长)
    # l=[111,222,333,444,555]
    # res=l[0:3]
    # print(res)#[111, 222, 333]
    # print(l)#[111, 222, 333, 444, 555]
    
    # 3、长度
    # l=[111,222,333,444,555]
    # print(len(l)) #5
    # 4、成员运算in和not in
    # l=[111,222,333,444,555]
    # print(111 in l)#True
    # print(111 not in l)#False
    
    # 5、追加
    # l=[111,222,333,444,555]
    # l.append(666)
    # l.append(777)
    # print(l)#[111, 222, 333, 444, 555, 666, 777]
    
    # 5.1 往指定位置前插入值insert
    # l.insert(0,123123231231)
    # print(l)#[123123231231, 111, 222, 333, 444, 555]
    
    # 6、删除
    l=[111,"aaa",222,333,444,555]
    # a:del是通用的、不是列表专属的删除方式
    # del l[0]
    # print(l)#['aaa', 222, 333, 444, 555]
    
    # b:列表专属的删除方式之指定元素删除
    # res=l.remove("aaa")
    # print(l)# None
    # print(res) #[111, 222, 333, 444]
    
    # c:列表专属的删除方式之指定索引删除,有返回值
    # l.pop() # 默认删除的是索引-1对应的值
    # print(l)#[111, 'aaa', 222, 333, 444]
    # res=l.pop(1)
    # print(l)#[111, 222, 333, 444]
    # print(res)#aaa
    
    # 7、循环
    # l=[111,"aaa",222,333,444,555]
    # for item in l:
    #     print(item)
    # 需要掌握的操作
    # l=[111,222,111,111]
    # print(l.count(111))#3
    #
    # l = [10, -1, 3, 2, 11, 7]
    # l.sort(reverse=True)
    # print(l)#[11, 10, 7, 3, 2, -1]
    #
    # l = [10, -1, 3, 2, 11, 7]
    # l.clear()
    # print(l)#[]
    #
    # l=['a',1,'b']
    # l.reverse()
    # print(l)#['b', 1, 'a']
    #
    # l=[11,22,33]
    # l.extend([444,555,66])
    # print(l)#[11, 22, 33, 444, 555, 66]
    #
    # l.append([444,555,666])
    # print(l)#[11, 22, 33, 444, 555, 66, [444, 555, 666]]
    
    
    # l1=[11,22,33]
    # l1列表内存存储
    # 索引0 值11的内存地址
    # 索引1 值22内存地址
    # 索引2 值33内存地址
    
    # l2=l1.copy() # 等同于l4=l1[:]
    # l2列表内存存储
    # 索引0 值11的内存地址
    # 索引1 值22内存地址
    # 索引2 值33内存地址
    # l2[0]=4444
    # print(l2) # [4444, 22, 33]
    # print(l1) # [11, 22, 33]
    
    # l3=l1
    # l3[0]=4444
    # print(l3)
    # print(l1)

    总结:

    存多个值

    有序

    可变



  • 相关阅读:
    CF767C Garland
    P2458 [SDOI2006]保安站岗
    P2704 [NOI2001]炮兵阵地
    P2607 [ZJOI2008]骑士
    POJ 1201 Interval (查分约束系统)
    位运算的魅力---N皇后问题
    设计模式之代理模式20170724
    C之Volatile关键字的介绍与使用20170724
    设计模式之桥梁模式20170721
    设计模式之策略模式20170720
  • 原文地址:https://www.cnblogs.com/guojieying/p/13067681.html
Copyright © 2020-2023  润新知