基础数据类型的认识及操作

字符串的操作

  • str索引切片

    • 按索引,第一个是0: s1[index]

      对字符串进行索引,切片出来的数据都是字符串类型

    • 按切片,顾头不顾尾:s1[start_index: end_index+1]

      s1 = 'python啊'       #取 Python
      s2 = s1[:6]          #0可省略
      
    • 切片可控制步长:s1[start_index: end_index+1: 步长]

      s1 = 'python啊'       #取pto
      s2 = s1[:5:2]         #步长为2
       #这里有个问题就是,为什么中间是5而不是6
      
    • 倒序(倒着取)

      s1 = 'Python全践22期'
      s2 = s1[-1:-6:-1]    #取 期22践全
      
  • str常用操作方法

    • upper:将字母全改为大写 lower:将字母全改为小写

      #应用:输入验证码,不区分大小写
      username = input('用户名:')
      password = input('密码:')
      code = 'QweA'
      print(code)
      your_code == input('请输入验证码,不区分大小写:')
      if your_code.upper() == code.upper():
          if username == '太白' and password == '123'
              print('登录成功')
          else:
              print('用户名密码错误')
      else:
          print('验证码错误')
      
    • startswith() 判断是否以某个字母开头

      s = 'taiBai'
      print(s.startswith('t'))           #返回True
      print(s.startswith('tai'))         #返回True
      print(s.startswith('B',3,6))       #判断Bai是否以B开头
      
    • replace(self, old, new, count) 替换指定字符,可以规定个数,默认全换

      msg = 'alex很nb,alex是老男孩教育的创始人之一,alex长的很帅'
      msg1 = msg.replace('alex','太白')
      print(msg1)         #返回'太白很nb,太白是老男孩教育创始人之一,太白长的很帅'
      
    • strip:去除空白 空格 \t \n

      s4 = '  \n太白\t'
      s5 = s4.strip()
      print(s5)           #返回 太白
      

      还可以去除指定字符

      s4 = 'rre太白qsd'
      s5 = s4.strip('qresd')
      print(s5)        #返回 太白
      
      s6 = 'rre太r白qsd'
      s7 = s6.strip('qresd')
      print(s7)       #返回 太r白,从前往后、从后往前依次识别进行去除,遇到不认识的就停止
      
    • split 默认按照空格分隔,返回一个列表 非常重要

      s6 = '太白 女生 吴超'
      le = s6.split()
      print(le)           #返回['太白','女生','吴超']    str ---> list
      
      s6 = '太白:女生:吴超'
      le = s6.split(':')
      print(le)          #返回结果相同
      
      s6 = ':barry:nvshen:wu'
      print(s6.split(':'))         #返回['', 'barry', 'nvshen', 'wu']
      print(s6.split(':',2))       #返回['', 'barry', 'nvshen:wu']
      
    • join(self, iterable) 非常好用

      s1 = 'alex'
      s2 = '+'.join(s1)
      print(s2)          #返回a+l+e+x
      
      le = ['太白', '女神', '吴超']       #列表里面的元素必须都是str类型
      s3 = ':'.join(le)
      print(s3)          #返回 太白:女神:吴超
      
    • count 返回字符串中指定的字符个数

      s2 = 'fadfagagafsfse'
      print(s8.count('a'))        #返回4
      
    • format 格式化输出,与%s没区别

      第一种用法:

      msg = '我叫{}今年{}性别{}'.format('大壮',25,'男')
      

      第二种用法:

      msg = '我叫{0}今年{1}性别{2}我依然叫{0}'.format('大壮',25,'男')
      print(msg)         #按照索引
      

      第三种用法:

      a = 100
      msg = '我叫{name}今年{age}性别{sex}'.format(age=a,sex='男',name='大壮')
      print(msg)         #这样可以不按照顺序
      
    • is系列

      name = 'taibai123'
      print(name.isalnum())       #字符串由字母或数字组成
      print(name.isalpha())       #字符串只由字母组成
      print(name.isdecimal())     #字符串只由十进制组成, 都返回bool类型
      
    • capitalize 首字母大写,其余变小写

      s1 = 'taiBAi'
      print(s1.capitalize())    #返回 Taibai
      
    • swapcase 大小写翻转

      s1 = 'taiBAi'
      print(s1.swapcase())      #返回 TAIbaI
      
    • title 每个单词的首字母大写

      msg = 'taibai say hi'
      print(msg.title())        #返回 Taibai Say Hi
      
    • center 设置填充物

      s1 = 'barry'
      print(s1.center(20))     #返回        barry        ,总长度为20
      print(s1.center(20,'*'))    #返回 *******barry********
      
    • find 和 index 通过元素找索引

      s1 = 'barry'
      print(s1.find('a'))     #返回 1
      print(s1.index('r'))     #返回 2,找到第一个就返回
      
      print(s1.find('o'))     #返回 -1,找不到返回-1
      print(s1.index('0'))     #找不到则报错
      

列表的认识及操作

列表的创建

  • 方式一:

    le = [1,2,'alex']
    
  • 方式二:

    le = list('')
    
  • 方式三:列表推导式

列表的增删改查

    • append:追加,加在列表尾部

      le = ['太白','小明']
      while 1:
          name = input('请输入新员工姓名:(Q或q退出程序)')
          if name.upper() == 'Q': break
          le.append(name)
      print(le)
      
    • insert:可以从中间插入

      le = ['太白','女神','吴老师','xiao']
      le.insert(2,'wusir')
      print(le)    #['太白','女神','wusir','吴老师','xiao'],插到位置2
      
    • extend:迭代追加

      le = ['太白','女神','吴老师','xiao']
      le.extend('abcd')
      print(le)           #['太白','女神','吴老师','xiao','a','b','c','d']
      
      le.extend(['alex',1,3])
      print(le)           #['太白','女神','吴老师','xiao','alex',1,3]
      
    • pop:按照索引位置删除,默认删除最后一个

      le = ['太白','女神','吴老师','xiao']
      le.pop(-1)           #按照索引删除(返回的是删除元素)
      print(le.pop(-1))    #返回 xiao
      print(le)            #返回['太白','女神','吴老师']
      
    • remove:指定元素删除,如果有重名元素,默认删除左边第一个

      le.remve('xiao')
      print(le)          #['太白','女神','吴老师']
      
    • clear:清空

      le.clear()
      print(le)       #返回 []
      
    • del

      按索引删除

      del le[-1]
      print(le)         #['太白','女神','吴老师']
      

      按切片(步长)删除

      del le[::2]
      print(le)        #[女神','xiao']
      
  • le = ['太白','女神','吴老师','xiao']
    le[0] = '男神'
    print(le)       #['男神','女神','吴老师','xiao']
    

    按切片改

    le[2:] = 'abc'
    print(le)       #['太白','女神','a','b','c']     切片返回一个列表
    

    按切片(步长)

    le = ['太白','女神','吴老师','xiao','wuli']
    le[::2] = 'abc'
    print(le)       #['a','女神','b','xiao','c']
    
  • for i in le:
        print(i)
    

一些常用操作

  • sort 列表才有,用来排序

    l1 = [5,4,3,7,8,6,1,9]
    l1.sort()     
    print(l1)     #返回 [1,3,4,5,6,7,8,9],默认从小到大排序
    
    l1.sort(reverse=True)     #从大到小
    print(l1)            #返回 [9,8,7,6,5,4,3,1]
    

    字符串也可以排序,按照ASCLL码排,但没什么意义

    • list相加

      l1 = [1,2,3]
      l2 = ['太白','123','女神']
      print(l1+l2)              #返回 [1,2,3,'太白','123','女神']
      
    • list相乘

      l1 = [1,2,3]
      l2 = l1*3
      print(l2)          #[1,2,3,1,2,3,1,2,3]
      
    • 问题:删除索引为奇数的元素

      倒叙法删除列表元素 因为删除列表的某个元素,后面元素的索引会跟着进1

      l1 = [11,22,33,44,55]
      for index in range(len(l1)-1,-1,-1):
         if index % 2 == 1:
             l1.pop(index)
      print(l1)                    #返回 [11,33,55]
      

      思维置换,这里是创建一个新列表,往里面加

      l1 = [11,22,33,44,55]
      new_l1 = []
      for index in range(len(l1)):
          if index % 2 == 0:
              new_l1.append(l1[index])
      l1 = new_l1
      print(l1)       #返回 [11,22,33]
      

元组的认识及操作

  • 只读列表,存大量的数据,可以索引,切片(步长) (100,’太白‘,True,[1,2,3])

  • 应用:

    重要数据,用户名,密码,个人信息,不想让别人改动的一些数据,存在元组

  • 元组的拆包,分别赋值

    a,b = (1,2)         #一一对应,不能多一个少一个
    print(a,b)          #返回 1 2
    
  • 元组中如果只有一个元素,并且没有逗号,那么它不是元组,它与该元素的数据类型一致

    tu1 = (2)
    print(tu1,type(tu1))     #返回 2 <class'int'>
    
    tu1 = ([1,2,3])
    print(tu1,type(tu1))     #返回 [1,2,3] <class'list'>
    
    tu1 = (1,)
    print(tu1,type(tu1))     #返回 (1,) <class'tuple'>
    
  • count 计算一个元素出现的次数

    tu = (1,2,3,3,3,2,2,3)
    print(tu.count(3))       #返回 4
    
  • index 跟上面一样

字典的认识及操作

字典的创建方式

  • 方式一

    dic = dict((('one',1),('two',2),('three',3)))
    print(dic)         #返回{'one':1,'two':2,'three':3}
    
  • 方式二

    dic = dict(one=1, two=2, three=3)
    
  • 方式三

    dic = dict({'one':1,'two':2,'three':3})
    

验证字典的合法性:键不能用可变的数据类型,否则报错

​键要唯一,不要重名,否则只打印后面的键

字典的增删改查
dic = {‘name’: ‘太白’,‘age’:18}

  • 增:

    • 直接加 有则改之,无则增加
    dic['sex'] = '男'
    print(dic)        #{'name':'太白','age':18,'sex':'男'}
    
    dic['age'] = 23   
    print(dic)        #{'name': '太白',‘age’:23}
    
    • setdefault 有则不变,无则增加

      dic.setfault('hobby')
      print(dic)        #{'name': '太白',‘age’:18,'hobby':None}
      
      dic.setfault('hobby','球类运动')
      print(dic)        #{'name': '太白',‘age’:18,'hobby':'球类运动'}
      
      dic.setfault('age',45)       #增加已有的
      print(dic)              #{'name': '太白',‘age’:18}    不改变
      
    • pop 按照键 删除键值对,有返回值

      dic.pop('age')
      ret = dic.pop('age')
      print(ret)            #返回 18
      print(dic)            #返回 {'name': '太白'}
      
      dic.pop('hobby')      #此时  会报错
      set = dic.pop('hobby','没有此键')
      print(ret)            #返回 没有此键
      
    • clear 清空

      dic.clear()
      print(dic)          #返回{}
      
    • del

      del dic['age']
      print(dic)          #返回 dic  =  {'name': '太白'}
      
      del dic['age1']     #若删除没有的键,则会报错
      
    • dic['name'] = 'alex'
      print(dic)           #返回dic  =  {'name': 'alex',‘age’:18}
      
  • 查 dic = {‘name’: ‘太白’,‘age’:18, ‘hobby_list’ : [‘直男’,‘钢管’,‘开车’]}

    • print(dic['hobby_list'])     #返回 ['直男','钢管','开车']
                                   #查到没有的键,则报错,所以不提倡
      
    • get

      le = dic.get('hobby_list')
      print(le)               #返回 ['直男','钢管','开车']
      
      le = dic.get('hobby_list1')     #打印没有的键
      print(le)                       #返回None
      
      le = dic.get('hobby_list1','没有此键eee')     #有键打印键的值,没有此键打印后面的内容
      print(le)                  #返回 没有此键eee
      
  • 三个特殊: keys() values() items()

    keys()

    print(dic.keys())        #返回 dict_keys(['name','age','hobby_list'])
                             #不能进行索引操作
    
    print(list(dic.keys()))  #返回 ['name','age','hobby_list']
                             #转化成列表
    
    for key in dic.keys():     #还可以循环遍历
        print(key)
    

    values()

    print(dic.values())     #返回 dict_values([太白',18,['直男','钢管','开车']])
    print(list(dic.values()))    #返回 [太白',18,['直男','钢管','开车']]
    
    for value in dic.values():
        print(value)
    

    items()

    print(dic.items())    #返回 dict_items([('name','太白'),('age',18),                                     ('hobby_list',['直男','钢管','开车'])])
    
    for i in dic.items():
        print(i)             #返回 ('name','太白')
                                  ('age',18)
                                  ('hobby_list',['直男','钢管','开车'])])
    
    for key,value in dic.items():
        print(key,value)           #用到元组的拆包
                                   #返回 name        太白
                                        age         18
                                        hobby_list  ['直男','钢管','开车']
    
  • update 更新,可增可改

    dic = ['name':'太白','age':18]
    dic.update(hobby='运动',hight='175')
    print(dic)          #返回 {'name':'太白','age':18,'hobby':'运动','hight':175}
    
    dic = ['name':'太白','age':18]
    dic.update(name='太白金星')
    print(dic)            #返回 {'name':'太白金星','age':18}
    
    dic = ['name':'太白','age':18]
    dic.update([(1,'a'),(2,'b'),(3,'c'),(4,'d')])
    print(dic)           #返回 {'name':'太白','age':18,1:'a',2:'b',3:'c',4:'d'}
    
    dic1 = {'name':'jin','age':18,'sex':'male'}
    dic2 = {'name':'alex','weight':75}
    dic1.update(dic2)
    print(dic1)           #返回 {'name':'alex','age':18,'sex':'male','weight':75}
                          #有重复的键就覆盖,没有的就添加
    
  • fromkeys 值共用一个

    dic = dict.fromkeys('abc',100)
    print(dic)           #返回 {'a':100,'b':100,'c':100}
    
    dic = dict.fromkeys([1,2,3],'alex')
    print(dic)           #返回 {1:'alex',2:'alex',3:'alex'}
    
    dic = dict.fromkeys([1,2,3],[])
    print(dic)           #返回 {1:[],2:[],3:[]}
    dic[1].append(666)
    print(dic)           #返回 {1:[666],2:[666],3:[666]},一个加,所有都加
    
  • 循环一个字典时,如果改变这个字典的大小,就会报错

    #将字典中含k元素的键值对删除
    dic = {'k1':'太白','k2':'barry','k3':'白白','age':18}
    for key in list(dic.keys()):       #要转换成列表的形式,否则报错
        if 'k' in key:
            dic.pop(key)
    print(dic)
    
  • 例:有字符串 msg = “k:1|k1:2|k2:3|k3:4” 处理成字典{k:1…}

    msg = "k:1|k1:2|k2:3|k3:4"
    l1 = msg.strip().split('|')
    dic = {}
    for i in l1:
        key,value = i.split(':')
        dic[key] = int(value)
    print(dic)
    

for循环和range

  • for循环 有限循环

    for 变量 in iterable:

    ​ pass

    s1 = '老男孩教育最好的讲师'
    for i in s1:
        print(i)
    

列表推导式
用一行代码构建一个比较复杂有规律的列表

  • 循环模式

    [ 变量(加工后的变量) for 变量 in iterable ] ,多理解这里加工后的变量

    l1 = [i for i in range(1,11)]            #将1到10放在一个列表中
    
    #从Python1期到Python100期 放入一个列表
    print([f'python{i}期' for i in range(1,101)])
    
  • 筛选模式

    [ 变量(加工后的变量) for 变量 in iterable if 条件 ]

    #打印30以内能被3整除的数
    l1 = [i for i in range(1,31) if i%3 == 0]
    print(l1)
    
    #含有两个‘e’的所有的人名留下来,  多层循环的列表推导式
    names = [['tom','fee','faeffa','pelae'],['alice','jill','wendu','jenne']]
    l1 = [name for i in names for name in i if name.count('e') == 2]
    print(l1)
    

range

类似于列表,自定制数字范围的数字列表

r = range(10)      #[0,1,2,3,4,5,6,7,8,9]   顾首不顾尾
print(r[1])       #返回 1, 索引
for i in range(1,101):
    print(i)            #打印1到100
for i in range(2,101,2):
    print(i)            #控制步长,为2
for i in range(100,0,-1):
    print(i)            #倒着打印,100到1
for i range(len(le)):
    print(i)           #利用range将le列表的所有索引依次打印出来
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值