3-python-bas

Python 基础

  1. 字符串string

    1. 访问

      s2="python"
      print(s2[1]) #y
      print(s2[-1]) #n
      
      user_id='admin001'
      #1.
      for i in user_id:    #重点
          print(i,end=' ')
      #2.
      len_id=len(user_id)
      for i in range(len_id):
          print(user_id[i],end=' ')
      print()
      #3.
      for i in range(len_id):
          print(user_id[i:i+1],end=' ')  #切出新的值,i
      

      判断用户名是否全是小写字母demo

      for i in user_id:
          if not ('a'<=i<='z'):
              break
          else:
              print('ok')
      
    2. 切片 重点

      • 顺序切片
        s1='i love python'
        print(s1[2:6])     #love
        print(s1[11:])     #on
        print(s1[-2:])     #on
        print(s1[-6:-2])   #pyth
        print(s1[-6:2])    #切不到
        print(s1[-6:12])   #pytho
        print(s1[:])       #全部,拷贝字符串
        
      • 字符串,变量驻留机制
        s2=s1
        print(s1==s2)
        print(s1 is s2)#True
        
        s3=s1[:]
        print(s1==s3)
        print(s1 is s1[:])#True
        
        小整数对象池和大整数对象池
        1. 小整数对象池

          整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。

          Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收。在一个 Python 的程序中,无论这个整数处于LEGB中的哪个位置,

          所有位于这个范围内的整数使用的都是同一个对象。同理,单个字母也是这样的。

        2. 大整数对象池。

          终端是每次执行一次,所以每次的大整数都重新创建,而在pycharm中,每次运行是所有代码都加载都内存中,属于一个整体,所以这个时候会有一个大整数对象池,即处于一个代码块的大整数是同一个对象。

      • 跳跃切片
        s4='abcdefg'
        print(s4[::2])#aceg,2代表步长
        print(s4[-3:2:-1])#ed反向切
        print(s4[-3:12:1])#efg
        print(s4[::-1])   #反转,面试题
        
        长度为20时显示…demo
        content='To improve your experience, we would like to collect data on the plugins and features you use. No personal data will be collected. An archive of a few kilobytes will be sent weekly.'
        if len(content)>20:  #如果内容的长度大于20就显示前17个字符和...否则就输出
            con=content[0:17]+'...'
        else:
            con=content
        print(con)
        con=content if len(content)<=20 else content[0:17]+'...'
        print(con)
        
    3. 连接符

      s1='py'
      s2='thon'
      s3=s1+s2
      s3=s1*3     #字符串的重复   pypypy
      
    4. 格式输出 重点

      u_name='python'
      u_age=20
      print('i am {0},and i am {1} year old'.format(u_name,u_age))
      print('i am {1},and i am {0} year old'.format(u_age,u_name))
      print('i am {0:10s},and i am {1} year old'.format(u_name,u_age))
      u_name='{0:10s}'.format(u_name)         #'python    '
      print('i am {nn},and i am {aa} year old'.format(nn=u_name,aa=u_age))#用这种比较好
      
    5. 内建函数

      1. count()

        返回 str在start和end之间 在 mystr里面出现的次数

         mystr.count(str, start=0, end=len(mystr))
        
            str='hello world hello china'
        
            num=str.count('hello',0,len(str))
        
            print(num)
        

        找出现频率最高的字母demo

        s1='hello world hello china'
        ss1=''                  #用于放不重复的字母
        for i in s1:
            if ss1.count(i)==0: #如果ss1里没有该字母就添加进去
                ss1=ss1+i
        max=0;                  #用于存放最高出现次数
        ch=''                   #用于存放出现次数最多的字母
        for i in ss1:
            m=s1.count(i)       #统计ss1中不重复字母在s1中的个数
            if max<m:
                max=m
                ch=i
        print(ch,max)
        
      2. find()

        检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1

         mystr.find(str, start=0, end=len(mystr))
        
            word='hello python,hello,world'
            f='hello' in word
            print(f)#true
            res01=word.find('hello',4,22)#13
            print(res01)#13
        
      3. replace

        把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.

         mystr.replace(str1, str2,  mystr.count(str1))
        
            word='hello python,hello,world'
            res02=word.replace('hello','hi',2)
        
      4. split():非常重要

        date='2018-3-1'
        times=date.split('-')
        print(times[0])  #2018
        

        如果字符串中有多个分隔符,就需要用正则表达式

      5. join()

            s2=['2018','3','1']
            s3='-'
            s4=s3.join(s2)
            print(s4)#2018-3-1
        
            arr=list(word)
            str_arr=','.join(arr)
            print(str_arr)#h,e,l,l,o, ,p,y,t,h,o,n,,,h,e,l,l,o,,,w,o,r,l,d
            str2='python'.join(['_one_','_two_','_three_'])#_one_python_two_python_three_
        
      6. isdigit()

        如果 mystr 只包含数字则返回 True 否则返回 False.

        f='3.14'
        print(f.isdigit())#false,包含.
        
      7. isalpha()

        如果 mystr 所有字符都是字母 则返回 True,否则返回 False

        mystr.isalpha()
        
      8. isalnum

        如果 mystr 所有字符都是字母或数字则返回 True,否则返回 False

        重点:以后项目中肯定用得到

        判断密码是否由数字字母下划线组成

        flag=True
        for i in pwd:
            if not (i.isalnum() or i=='_'):
                flag=False
                break
        print(flag)
        
        
      9. upper() lower()

      10. strip() lstrip() rstrip() len(s)

        strip:去掉前后空格

        len:公共方法,有长度就能用,数组和字符串

      11. 补充

        方法描述
        string.capitalize()把字符串的第一个字符大写
        string.center(width)返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
        string.count(str, beg=0, end=len(string))返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
        string.decode(encoding=‘UTF-8’, errors=‘strict’)以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 ‘ignore’ 或 者’replace’string.encode(encoding=‘UTF-8’, errors=‘strict’)以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’
        string.endswith(obj, beg=0, end=len(string))检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
        string.expandtabs(tabsize=8)把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。
        string.find(str, beg=0, end=len(string))检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
        string.format()格式化字符串string.index(str,beg=0,end=len(string))
        string.isalnum()如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
        string.isalpha()如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
        string.isdigit()如果 string 只包含数字则返回 True 否则返回 False.
        string.islower()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
        string.isnumeric()如果 string 中只包含数字字符,则返回 True,否则返回 False
        string.isspace()如果 string 中只包含空格,则返回 True,否则返回 False.
        string.istitle()如果 string 是标题化的(见 title())则返回 True,否则返回 False
        string.isupper()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
        string.join(seq)以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
        string.ljust(width)返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
        string.lower()转换 string 中所有大写字符为小写.、
        string.lstrip()截掉 string 左边的空格
        max(str)返回字符串 str 中最大的字母。
        min(str)返回字符串 str 中最小的字母。
        string.partition(str)有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string.
        string.replace(str1, str2, num=string.count(str1))把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.
        string.rfind(str, beg=0,end=len(string) )类似于 find()函数,不过是从右边开始查找.
        string.rindex( str, beg=0,end=len(string))类似于 index(),不过是从右边开始.
        string.rjust(width)返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
        string.rpartition(str)类似于 partition()函数,不过是从右边开始查找.
        string.rstrip()删除 string 字符串末尾的空格.
        string.split(str="", num=string.count(str))以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串
        string.splitlines([keepends])按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
        string.startswith(obj, beg=0,end=len(string))检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.
        string.strip([obj])在 string 上执行 lstrip()和 rstrip()
        string.swapcase()翻转 string 中的大小写
        string.title()返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
        string.upper()转换 string 中的小写字母为大写
        string.zfill(width)返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0
        string.isdecimal()isdecimal()方法检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。
    6. 帮助文档

      user_id ='admin'
      print(dir(user_id))#输出所有方法
      print(help(user_id.strip))#输出该方法的功能
      
    7. 字符编码 熟记

      encode() 将字符串编码为字节码;decode() 将字节码解码为字符串

          # -*- coding: UTF-8 -*-
      
          # python3字符串编码默认就是unicode
          word='hello python,hello world,hellojapan 你好 中国'
      
          # 将字符串编码为utf-8的字节流格式
          byte_utf_word=word.encode('utf-8')
          print(byte_utf_word)
      
          #将字节流解码为字符串
          str_utf_word=byte_utf_word.decode('utf-8')
      
          # 将字符串编码为GBK的字节流格式
          byte_gbk_word=word.encode('GBK')
      
          str_gbk_word=byte_gbk_word.decode('GBK')
      
  2. 列表list

    1. list

      列表的数据项不需要具有相同的类型

      List(列表) 是 Python 中使用最频繁的数据类型。

      列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。

      两个数组一模一样也是两个数组,不能比较,只能比较内容

    2. 列表取值

      列表用 [ ] 标识,是 python 最通用的复合数据类型。

      列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。

      加号 + 是列表连接运算符,星号 * 是重复操作。

      list=[1,3,5,7,9,11]
      print list               # 输出完整列表
      print list[:]
      print list[0]            # 输出列表的第一个元素
      print list[-1]           # 输出列表的最后一个元素
      print list[1:3]          # 输出第二个至第三个元素
      print list[2:]           # 输出从第三个开始至列表末尾的所有元素
      print list[:5]
      print tinylist * 2       # 输出列表两次
      print list + tinylist    # 打印组合的列表
      
      for item in range(len(arr)):
         print(arr(item))
      
      for item in arr:        #遍历数组
         print(item)
      

      分页流程demo

      page_count=2#每页几个
      page_index=1#当前页
      m=len(books)/page_count
      n=len(books)//page_count#向下取整
      pages=n if m==n else n+1 #总页面
      books_index=books[(page_index-1)*page_count:page_index*page_count]#显示第一页
      print(books_index)
      
    3. list 操作

      fruits = ['orange', 'apple', 'pear', 'banana']
      
      # 统计
      # print (fruits.count('apple'))
      # 判断是否存在
      # print (fruits.index('apple'))
      # 从第三个位置开始寻找
      # print (fruits.index('apple',3))
      # 反转,反的是自己,不能赋给别人
      # fruits.reverse()
      # f=fruits[::-1]#反转之后给别人,切片没有操作数据的能力
      # fruits.sort()#排序
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Python进行BP神经网络优化时,可以通过对激活函数、损失函数、学习率和网络结构等进行调整来实现优化。 首先,激活函数的选择对于BP神经网络的性能优化非常重要。常用的激活函数包括Sigmoid、ReLU和tanh函数等。选取合适的激活函数可以提高网络的收敛速度和准确率。 其次,损失函数也是优化BP神经网络的重要因素。常见的损失函数有均方误差(MSE)和交叉熵等。根据具体应用场景选择合适的损失函数能够提高网络的性能。 学习率是指在梯度下降算法中更新权重时的步长。合适的学习率可以使网络收敛速度更快,但如果学习率过大,可能会导致网络振荡或无法收敛;而学习率过小,则可能导致收敛速度慢。因此,需要通过实验找到适合当前问题的学习率。 此外,网络结构的设计也关系到BP神经网络的优化效果。网络结构包括输入层、隐藏层和输出层的神经元数量、层数以及连接权值的初始化等。通过增加隐藏层的数量或改变神经元的数量,可以提高网络的表示能力和学习能力。 总而言之,优化BP神经网络可以通过调整激活函数、损失函数、学习率和网络结构等来实现。不同的应用领域可能需要不同的优化方法,因此,需要根据具体问题进行实验和调整,寻找最佳的参数设置。这样可以提高BP神经网络的性能和准确率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值