【飞桨/百度领航团/零基础Python】百度飞桨领航团零基础Python速成营笔记-02

本文目录

  • 课程链接
  • rang的用法
  • 字符串进阶
  • list进阶

课程链接

  • 课程传送门

rang的用法

  • rang(10):从0~10的循环

字符串进阶

  • 字符串的索引和切片

    • 切片的语法:[起始:结束:步长] 字符串[start: end: step] 这三个参数都有默认值,默认截取方向是从左往右的 start:默认值为0;end : 默认值未字符串结尾元素; step : 默认值为1;

      如果切片步长是负值,截取方向则是从右往左的

    • 例子

      name = 'mollymolly'
      name[1]  
      name[-4]
      name[1:4] #左闭右开
      name[1:7:2]  # 2是步长,意思是每隔两个选一个;值可以为负数,若是负数则倒着数默认为1
      name[::-1]   #把字符串反过来
      
      # 如果字符串以'p'结尾,则打印
      list_string = ['apple','banana_p','orange','cherry_p']
      for fruit in list_string:
          if fruit[-1] == 'p':     #与if fruit.endswith('p'):等价
              print(fruit)
      
  • 字符串常用功能

    • help(my_string.count)  #help是内置的函数,可以返回括号里面函数的使用方法
      
      my_string = 'aabcabca'
      my_string.count('abca')  #数字符串里面有多少个不重叠的‘abca’
      
    • find和index
      find:返回从左第一个指定字符的索引,找不到返回-1
      index:返回从左第一个指定字符的索引,找不到报错

      my_string = 'hello_world'
      my_string.find('wo')   #返回第一个字母的下标
      'and' in article  #判断article里面是否有and,返回true或false
      
    • startswith和endswith

      my_string = 'hello_world'
      my_string.startswith('hello')  # 是否以hello开始
      my_string.endswith('world')   # 是否以world结尾
      
    • split字符串的拆分:按照指定的内容进行分割 正则表达式

      my_string = 'hello_world'
      my_string.split('_')     #返回结果:['hello', 'world']
      
    • 字符串的替换:从左到右替换指定的元素,可以指定替换的个数,默认全部替换

      my_string = 'hello_world'
      my_string.replace('_',' ')
      
      my_string = "I wish to wish the wish you wish to wish"
      my_string.replace('wish','wish'.upper(), 3)   #只替换前面3个wish
      
    • 字符串标准化:默认去除两边的空格、换行符之类的,去除内容可以指定

      my_string = ' hello world\n'
      my_string.strip()
      
    • 字符串的变形

      my_string = 'hello_world'
      my_string.upper()   #把每一个字母变成大写
      my_string.lower()   #把每一个字母变成小写
      my_string.capitalize()  #变成首字母大写
      
  • 字符串的格式化输出

    • %

      accuracy = 80/123
      print('老板!我的模型正确率是%.2f!' % accuracy)   #%.2f:保留小数点后两位
      '%.d %%' %(accuracy*100)    #输出65%  
      
        name = 'Molly'
        hight = 170.4
        score_math = 95
        score_english = 89
        print('大家好!我叫%s,我的身高是%d cm, 数学成绩%.2f分,英语成绩%d分' % (name, hight, score_math, score_english))
      
    • format
      若指定了 : s ,则只能传字符串值,如果传其他类型值不会自动转换

      当不指定类型时,传任何类型都能成功,如无特殊必要,可以不用指定类型

      'Hello, {0}, 成绩提升了{1:.1f}分,百分比为 {2:.1f}%'.format('小明', 6, 17.523)
      
      'Hello, {name:}, 成绩提升了{score:.1f}分,百分比为 {percent:.1f}%'\    # \ :说明还没写完,要换行
          .format(name='小明', 
                  score=6, 
                  percent = 17.523)
      
    • f-string:一种可读性更好的方法 f-string

      name = 'Molly'
      hight = 170.4
      score_math = 95
      score_english = 89
      print(f"大家好!我叫{name.lower()},我的身高是{hight:.3f} cm, 数学成绩{score_math}分,英语成绩{score_english}分")    #{}里面也可以执行命令
      #结果:大家好!我叫Molly,我的身高是170.400 cm, 数学成绩95分,英语成绩89分
      

list进阶

  • list索引、切片:与字符串的类似

    list1 = ['a','b','c','d','e','f']
    list1[2]
    list1[2:5]   #左闭右开,从2~5
    
  • list常用函数

    • 添加新的函数

      list1 = ['a','b','c','d','e','f']
      list1.append('g') # 在末尾添加元素
      print(list1)
      list1.insert(2, 'ooo')  # 在指定位置添加元素,如果指定的下标不存在,那么就是在末尾添加
      print(list1)
      
      list2 = ['z','y','x']
      list1.extend(list2) #合并两个list;会改变list1;list2中仍有元素
      list1.append(list2)  #将list2作为一个整体合并到list1中
      list1+list2    #合并两个list;list1和list2不变
      print(list1)
      print(list2)
      
    • count 计数 和 index查找(没有find方法)

      list1 = ['a','b','a','d','a','f']
      print(list1.count('a')) 
      print(list1.index('a'))    #返回第一个a的位置
      print('a' in list1)     #返回true或false
      
    • 删除元素

      list1 = ['a','b','a','d','a','f']
      print(list1.pop(3)) 
      print(list1.pop())   # 把列表中的最后一个弹出,即‘f’
      print(list1)
      list1.remove('a')   #把最左边的‘a’移除掉,返回的是空值
      print(list1)
      
  • 列表生成式

    • 例子1:[ 操作 for n in 列表名 ]

      • [n+1 for n in list_1]  #和下面的方法等效:把list_1中的每一项加1
        
        for i in range(len(list_1)):
            list_1[i] += 1
        
      • # 1-10之间所有数的平方 
        [(n+1)**2 for n in range(10)]
        #结果:  [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
        
      • # 1-10之间所有数的平方 构成的字符串列表
        [str((n+1)**2) for n in range(10)]
        #结果:  ['1', '4', '9', '16', '25', '36', '49', '64', '81', '100']
        
      • list1 = ['a','b','a','d','a','f']
        ['app_%s'%n for n in list1]
        [f'app_{n}' for n in range(10)]   #和上面的效果一样
        #结果:  ['app_a', 'app_b', 'app_a', 'app_d', 'app_a', 'app_f']
        
    • 例子2:筛选

      • list_1 = [1,2,3,4,5]
        [n for n in list_1 if n%2==0]    #等价下面的方法
        
        list_2 = []
        for i in range(len(list_1)):
            if list_1[i] % 2 ==0:
                
                list_2.append(list_1[i])
        
      • # 字符串中所有以'sv'结尾的
        list_2 = ['a','b','c_sv','d','e_sv']
        [s for s in list_2 if s.endswith('sv')]
        #结果:   ['c_sv', 'e_sv']
        
      • # 取两个list的交集
        list_A = [1,3,6,7,32,65,12]
        list_B = [2,6,3,5,12]
        [i for i in list_A if i in list_B]
        #结果:[3, 6, 12]
        
      • #在list_A 但是不在list_B中
        list_A = [1,3,6,7,32,65,12]
        list_B = [2,6,3,5,12]
        [i for i in list_A if i not in list_B]
        
      • [m + n for m in 'ABC' for n in 'XYZ']
        #结果:  ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
        
  • 生成器

    • 通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

    • g = (x * x for x in range(10))
      #访问生成器的值
      next(g)   
      
      for n in g:
          print(n)
      
    • 定义函数:生成器 :yield

      def factor(max_num):
          # 这是一个函数  用于输出所有小于max_num的质数
          factor_list = []   #存储质数的列表
          n = 2
          while n<max_num:
              find = False
              for f in factor_list:
                  # 先看看列表里面有没有能整除它的
                  if n % f == 0:
                      find = True
                      break
              if not find:
                  factor_list.append(n)
                  yield n    #抛出来一个结果,下一次循环从这里开始
                  
              n+=1
              
      g = factor(100) #g是一个生成器,这个时候不会调用factor函数
      for n in g:     #每进行一次循环时才调用函数进行一个运算,每次运算从yield开始
          print(n)     
      

你可能感兴趣的:(python速成营,python)