python基础

Posted blog-apply

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础相关的知识,希望对你有一定的参考价值。

输入和输出:
    输入:input (输入的数据类型是str型)
  输出:print (输出多个值时中间用逗号隔开,sep可以指定多个值之间的连接符)
  eg:print(age,7000,sep‘+’)
      500+7000
变量:
定义:python中的变量是在第一次赋值的时候就已经定义了
常见数据类型:
1、数字类型:Number
  • (1)int 整型。通常被称为是整型或整数,是正或负整数,不带小数点
    (2)float 浮点。由整数部分与小数部分组成
    (3)complex:复数。由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型
      eg:定义:num = 4+3j 4为实部 3为虚部
    (4)运算:
        加法:3+4
        减法:4-3
        乘法:3*4
        除法:4/3
        取整:3 // 2
        取余:6 % 4
        次方:2**3(2的3次方)  
2、字符串:string
  • (1).字符串的拼接:
        var = ‘hello‘
        var1 = “world!”
        var 3= ‘1‘
        var4 = var + var1
        print(var4)
        print(var,var1)
        print(var+‘, ‘+var1)
         
    (2).下标索引:字符串的索引分为正数和负数
      正数下标从左往右,从0开始,最后一个下标是len(a)-1;
      负数下标从右往左,从-1开始,最后一个下标是-len(a)
     
    (3)截取:
    正数下标a[3:5] 截取的是下标为3的元素到下标为4的元素,冒号右边下标对应的元素不会截取到;
    负数下标a[-4:-1] 截取的是下标为-1的元素倒下标为-4的元素,冒号右边下标对应的元素不会截取到;
    索引截取:var = ‘hello world!‘
          print(var)
          print(var[2::2])
          结果为:lowrd
    从下标为2的元素开始,隔两个取一个元素
          var = ‘hello world!‘
          print(var)
          print(var[::-1])
          结果为:dlrow olleh
    从下标为-1的元素开始向左倒取
          var = ‘hello world!‘
          print(var)
          print(var[3::-2])
          结果为:le
    从下标为3的元素开始,按负数下标原则,向左倒取,隔两个取一个元素
    ?
    (4).字符串的函数:
    1.len:返回字符串的长度
        eg:a = ‘hello world‘
          print(len(a))
          结果为:11
    2.count:查看出现的次数
        eg:a = ‘hello world‘
            a.count(‘l‘)
            结果为:3
        表示‘l’在a字符串中出现了三次
    3.capitalize:将字符串的第一个字符转换为大写
              eg:a = ‘hello world‘
                a.capitalize()
                结果为:Hello world
    4.center:返回一个固定宽度且居中的字符串,剩余内容由指定的字符填充,若不指定填充字符,默认空格填充
          eg:a = ‘hello world‘
              a.center(20,‘*‘)
              结果为:*****hello world*****
    5.find:检测输入内容是否在字符串中
        eg:a = ‘hello world‘
            a.find(‘o‘)
            结果为:4
        显示的是查找字符的下标,默认显示第一次出现的下标
        eg:a = ‘hello world‘
            a.find(‘o‘,3,5)
            结果为:4
        显示查找字符的下标,后面可添加范围,范围用下标表示
    6.replace:将字符串中的某些内容进行替换
          eg:a = ‘hello world‘
              a.replace(‘o‘,‘#‘)
              结果为:hell# w#rld
          默认全部替换
          eg:a = ‘hello world‘
              a.replace(‘o‘,‘#‘,1)
              结果为:hell# world
          添加替换次数,则从头开始按次数替换
    7.split:以输入内容为分隔符截取字符串
        eg:a = ‘hello world‘
            a.split(‘o‘,1)
            结果为:hell world
        以‘o’为分割符把该字符串分割成两个,作为分隔符的字符会取消输出,后面数字代表分割几次(建议分隔符使用不需要的内容来作为)
    8.index:跟find方法相同,只不过若输入内容不在字符串中会报错
        eg:a = ‘hello world‘
            a.index(‘e‘,0,3)
            结果为:1
        显示下标,若输入内容在字符串中没有,则会报错,可以根据下标指定范围(出现错误后面的代码则不执行,若想之后的代码继续执行,建议使用 find)
    9.isalnum:如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回 False
          eg:a = ‘hello world‘
              a.isalnum()
              结果为:true
          eg:a = ‘hello world%‘
              a.isalnum()
              结果为:false
    10.isalpha:如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回False
            eg:a = ‘helloworld‘
              a.isalpha()
              结果为:true
    11.isdigit:字符串只包含数字则返回True否则返回False
          eg:a = ‘hello world‘
              a.isdigit()
              结果为:false
    12.islower:如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回False
          eg:a = ‘hello world‘
              a.islower()
              结果为:true
    13.isspace:如果字符串中只包含空格,则返回True,否则返回False
          eg:a = ‘hello world‘
              a.islower()
              结果为:false
    14.istitle:检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写
          eg:a = ‘hello world‘
              a.istitle()
              结果为:false
    15.lower:转换字符串中所有大写字符为小写
        eg:a = ‘Hello world‘
            a.istitle()
            结果为:hello world
    16.max:返回字符串 str 中最大的字母。
      eg:a = ‘hello world‘
          max(a)
          结果为:w
    17.min:返回字符串 str 中最小的字母
      eg:a = ‘hello world‘
          min(a)
          结果为:‘ ‘(空格)
      以ASCII码表为基准
    18.startswith:检查字符串是否是以 obj 开头,是则返回True,否则返回False
              eg:a = ‘hello world‘
                a.startswth(‘h‘)
                结果为:true
              eg:a = ‘hello world‘
                a.startswith(‘hel‘)
                结果为:true
    3、列表:list
  • 列表的定义:
      方式一:list1 = []   常用
      方式二:list2 = list()
     
    下标索引:
      与字符串规则一致
      正数下标从左往右,从0开始,最后一个下标是长度减一
      负数下标从右往左,从-1开始,最后一个下标是负长度
     
    列表截取:
    names = [‘tom‘,‘LISI‘,56,78,89]
    #取下标对应的元素
    #print(names[-1])
    ?
    #截取一段:
    #print(names[1:5])
    ?
    #截取下标为2的元素后面的所有内容
    #print(names[2:])
    #print(names[-4:])
    列表嵌套:输出列表里嵌套的列表的某个值
    names = [‘tom‘,‘LISI‘,56,‘哈哈‘,2,‘safe‘,[‘1‘,2,4],78,89]
    print(names[6][1])
    列表方法:
    1、.append:在列表末尾添加新的对象
      eg:names = [‘a‘,‘b‘,‘c‘]
        print(names)
        names.append(‘d‘)
        print(names)
        结果为:[‘a‘,b‘,‘c‘,‘d‘]
    2、.count:统计某个元素在列表中出现的次数
      eg:names = [‘a‘,‘b‘,‘c‘,‘c‘]
        print(names)
        a = names.count(‘c‘)
        print(a)
        结果为:2
    3、.extend:在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
      eg:names = [‘a‘,‘b‘,‘c‘]
        print(names)
        list1 = [24,25,26]
        names.extend(list1)
        print(names)
        结果为:[‘a‘,b‘,‘c‘,24,25,26]
    4、.index:从列表中找出某个值第一个匹配项的索引位置,索引从0开始
      eg:names = [‘a‘,‘b‘,‘c‘]
        print(names)
        names.index(‘c‘)
        print(names)
        结果为:2
      输入元素值,结果显示的是下标
    5、.insert:将对象插入列表
      eg:names = [‘a‘,‘b‘,‘c‘]
        print(names)
        names.insert(1,5)
        print(names)
        结果为:[‘a‘,‘b‘,5,‘c‘]
      eg:names = [‘a‘,‘b‘,‘c‘]
        print(names)
        list1 = [‘ds‘]
        names.insert(1,list1)
        print(names)
        结果为[‘a‘,‘b‘,[‘ds‘],‘c‘]
    6、.pop(index) :移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
      eg:names = [‘a‘,‘b‘,‘c‘]
        print(names)
        names.pop(1)
        print(names)
        结果为:[‘a‘,‘c‘]
      移除时输入元素的下标
    7、.remove(obj): 移除列表中某个值的第一个匹配项
      eg:names = [‘a‘,‘b‘,‘c‘,‘a‘,‘d‘,‘a‘]
        print(names)
        names.remove(‘a‘)
        print(names)
        结果为:[‘b‘,‘c‘,‘a‘,‘d‘,‘a‘]
    8、.reverse():反向列表中元素,倒转
      eg:names = [‘a‘,‘b‘,‘c‘,‘a‘,‘d‘,‘a‘]
        print(names)
        names.reverse()
        print(names)
        结果为:[‘a‘,‘d‘,‘a‘,‘c‘,‘b‘,‘a‘]
    9、.sort([func]): 对原列表进行排序
      eg:names = [24,15,36,26,31,29]
        print(names)
        names.sort()
        print(names)
        结果为:[15,24,26,29,31,36]
4、元组:tuple
  • 定义元组:
    如果只有一个元素,必须在元素后加‘,‘;
    元组里可以存放任意类型的数据;
    一旦定义,不可更改;
    不可添加,不可分割
      方式一:tup1 = (‘dfs’,)
      方式二:tup2 = tuple()
       
    元组索引与列表、字符串规则一致。
    截取:tup1 = ("sadfsa",["sda","sds",45],(34,45))
    print(type(tup1))
    输出类型为:tuple
    print(tup1[1])
    截取元组中下标为1的元素是一个列表,显示为:[‘sda‘,‘sds‘,45]
    print(tup1[1][-1])
    截取元组中下标为1的元素是一个列表中的下标为-1的元素,显示为:45
    print(tup1[1:])
    截取元组中下标为1的元素及后面所有的元素,显示为:(["sda","sds",45],(34,45)
    ?
    元组常用函数:
    1.len(tuple):计算元组元素个数
      eg:tup1 = (‘a‘,‘b‘,‘c‘)
          print(len(tup1))
    2.max(tuple):返回元组中元素最大值
      eg:tup1 = (‘a‘,‘b‘,‘c‘)
          print(max(tup1))
    3.min(tuple):返回元组中元素最小值
      eg:tup1 = (‘a‘,‘b‘,‘c‘)
          print(min(tup1))
    4.tuple(seq):将列表转换为元组
      eg:list1 = [1,2,3]
          a = tuple(list1)
          print(a)
5、集合
  • 定义:
    方式一:set1 = set()定义空集合
    方式二:set2 = {123}
     
    特点:无序不重复元素,去重,没有下标索引,支持集合运算
    ?
    类型转换:list1 = [1,2,3]
          set1 = set(list1)
          print(set1)
          列表转集合
    ?
    集合运算:
    a = t | s   # t 和 s的并集
    b = t & s   # t 和 s的交集
    c = t – s   # 求差集(项在t中,但不在s中)
    d = t ^ s   # 对称差集(项在t或s中,但不会同时出现在二者中)
    ?
    常用操作:
    1.添加一个元素 s.add()
      eg:s1 = {1,2,3}
          s1.add(4)
          print(s1)
    2.删除一个元素 s.remove()
      eg:s1 = {1,2,3}
          s1.remove(2)
          print(s1)
    3.删除整个集合 del (s)
      eg:s1 = {1,2,3}
          del(s1)
          print(s1)
    4.长度计算 len(s)
      eg:s1 = {1,2,3}
          len(s1)
          print(s1)
6、字典:dict
  • 定义:
      方式一:t1 = {} 定义空字典
      方式二:t1 = dict()
      t1= {键:值,键:值}
    t1= {key1:value1,key2:value2}
    ?
    特点:
      以键值对的形式存放,键要唯一;
      不是通过索引存取;
      值可以是任意数据类型
    常用操作:
    1. print(dict[‘thrid‘])   后台打印键为thrid的值
    2. dict[‘thrid‘] = ‘网易‘   将键为thrid的值修改成‘网易‘
    3. del dict[‘second‘]     删除键为second的键值对
    4. dict.clear()     清空字典
    5. del dict         删除字典
     
    字典函数:
    1.clear() 删除字典内所有元素
    ?
    2.copy()   复制
    eg:t1 = {}
        t2 = t1.copy
        print(t2)
    3.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
    eg:t1 = {}
        t2 = t1.fromkeys(‘zaq‘,‘s‘)
        print(t2)
        结果为:{‘z‘:‘s‘,‘a‘:‘s‘,‘q‘:‘s‘}
    4.get() 返回指定键的值,如果值不在字典中返回default值
    eg:t1 = {a:b,c:d}
        e = t1.get(a)
        print(e)
    5.keys() 以列表返回一个字典所有的键
    eg:t1 = {a:b,c:d}
        e = t1.keys()
        print(e)
    6.setdefault 和get()类似,但如果键已经不存在于字典中,将会添加键并将值设为default
    eg:t1 = {a:b,c:d}
        t1.setdefault(e)
        print(t1)
    如果键存在,不会对原有键和值进行修改
    7.update(dict2) 把字典dict2的键值对更新到dict里
    eg:t1 = {a:b,c:d}
        t2 = {a1:b1,c1:d1}
        t1.update(t2)
        print(t1)
    8.values() 以列表返回字典中的所有值
    eg:t1 = {a:b,c:d}
        a = t1.values()
        print(t1)
控制结构:
  • 分支结构(判断):if elif else语句
  • 循环结构:for循环可以遍历列表
    1.for循环:for 变量 in 次数/列表
              执行的语句
    for循环可以遍历输出列表的元素,注意循环次数是由列表中的元素个数控制的
    eg:
    names = [‘hello‘,‘tom‘,‘hu‘]
    for one in names:
        print(one)
    eg:
    for one in range(1,10):
        print(one)
        输出1到九
    for one in range(1,100,5):
        print(one)
        输出1到100,隔5个取一次
    ?
    2.while循环:while 条件:
                执行语句
    3、break和continue:
    break:终止整个循环
    continue:终止本次循环

字符串格式化输入:

  • 方式一:
    print("%s的年龄是%d" %(name,age))
    注意:%s代表字符串,%d代表整数,%f代表浮点数
    方式二:format
    print({0}的年龄是{1}.format(name,age))
    注意:format在输入值的时候是根据位置传递的,可以在{}指定参数位置,下标传递
    方式三:
    print(f"{name}的年龄是{age}")
函数:function
  • 定义:Python定义函数使用def关键字,函数名的命名规则和变量类似,要先定义再调用
    函数名为自定义名称,参数列表为传入的参数
        def 函数名 (参数列表)
          函数体
    直接输出函数名,会输出函数的内存地址
    作用:函数用于将相关功能打包并参数化
    1、必填参数:一旦定义,调用时必须传入值,多个参数定义的时候中间使用逗号隔开
    2、默认参数:函数参数定义的时候指定默认值,在函数调用的时候可以不输入值,如果不传入则使用默认值,如果传入值,就是传入的新值
    3、可变参数(不定长参数):* 可以接收在调用时传入的多个值,存放在元组中
    4、关键字可变数量参数:**
    定义完成后传入的值要以键值对的形式传入,传入的值为一个字典
    注意:上述四种参数参数位置不可改变
    函数里面可以继续调用其他函数
    ?
    函数的返回值:
    递归函数:当一个函数在函数体内调用其本身时,这个函数就称为递归函数
模块和包:
  • 模块:python中一个.py文件就是一个模块
      能避免函数名、变量名重名,增加代码的可读性
    导入模块:import 模块名     (导入内置模块)
          方式一:import 模块名
                  模块名.函数名()
          方式二:from 模块名 import 函数名
                    调用                 (导入单个函数)
                  from 模块名 import 函数名,函数名
                    调用                 (导入多个函数)
                  from 模块名 import *
                    调用                 (导入全部函数)
          方式三:import 包名.模块名 as 模块名
                    模块名.函数名()       (导入指定模块)
          方式四:import 包名.模块名,包名.模块名
                    包名.模块名.函数名()
          方式五:form 包名.模块名 import 函数名,函数名
                    调用                 (导入多个函数)
          方式六:from 包名.模块名 import *
                    调用                 (导入某个模块的所有函数)
    包:python新建的包里都会有一个__inint__.py文件(初始化文件),一般是包里面存放着模块
正则表达式:
  • 访问这个网址: https://regex101.com/   来验证正则表达式的正确性
    元字符:metacharacters
    它们出现在正则表达式字符串中,不是表示直接匹配他们, 而是表达一些特别的含义。
    包含: . * + ? [ ] ^ $ { } | ( )
    1、点-匹配所有字符,表示要匹配除了换行符之外的任何单个字符
      比如,从下面的文本中选择出所有的颜色
    苹果是绿色的
    橙子是橙色的
    香蕉是黄色的
    乌鸦是黑色的
    也就是要找到所有以 色 结尾,并且包扩前面的一个字符的词语。就可以这样写正则表达式     .色
    其中 点 代表了任意的单个字符, .色 合起来就表示要找任意一个字符后面是 色 这个字,合起来两个字的字符串
    eg:import re
      p = re.compile(r‘.色‘)for one in p.findall(content):
          print(one)
    2、星号-重复匹配任意次,表示匹配前面的子表达式任意次,包括0次
      比如,要选择每行逗号后面的字符串内容,包括逗号本身。
    苹果,是绿色的
    橙子,是橙色的
    香蕉,是黄色的
    乌鸦,是黑色的
    猴子,
    就可以这样写正则表达式     ,.*   *紧跟在 . 后面, 表示任意字符可以出现任意次,所以整个表达式的意思就是在逗号后面的所有字符,包括逗号
    eg:import re
      p = re.compile(r‘,.*‘)for one in p.findall(content):
          print(one)
    注意: .* 在正则表达式中非常常见,表示匹配任意字符任意次数。当然这个 * 前面不是非得是 点 ,也可以是其它字符
    4、加号-重复匹配多次,表示匹配前面的子表达式一次或多次,至少匹配一次,不包括0次
      比如,要从文本中选择每行逗号后面的字符串内容,包括逗号本身。但是添加一个条件,如果逗号后面没有内容,就不要选择了。
    苹果,是绿色的
    橙子,是橙色的
    香蕉,是黄色的
    乌鸦,是黑色的
    猴子,
    就可以这样写正则表达式     ,.+
    5、问号-匹配0-1次,匹配前面的子表达式0次或1次
      比如,要从文本中,选择每行逗号后面的1个字符,也包括逗号本身
    苹果,绿色的
    橙子,橙色的
    香蕉,黄色的
    乌鸦,黑色的
    猴子,
    就可以这样写正则表达式   ,.?
    6、花括号-匹配指定次数,表示前面的字符匹配指定的次数
    比如 ,下面的文本
    红彤彤,绿油油,黑乎乎乎乎,绿油油油油
    ?
    表达式 油{3} 就表示匹配连续的 油 字3次
    表达式 油{3,4} 就表示匹配连续的 油 字至少3次,至多4次
    ?
    ***贪婪模式和非贪婪模式
      贪婪模式:在正则表达式中, ‘*’, ‘+’, ‘?’ 都是贪婪地,使用他们时,会尽可能多的匹配内容
      非贪婪模式:也就是在后面加上 ?
    7、对元字符的转义
    反斜杠 在正则表达式中有多种用途。比如,我们要在下面的文本中搜索所有点前面的字符串,也包含点本身
    苹果.是绿色的
    橙子.是橙色的
    香蕉.是黄色的
    如果,我们这样写正则表达式 .*. , 肯定不对,因为 点 是一个元字符,直接出现在正则表达式中,表示匹配任意的单个字符,不能表示 . 这个字符本身的意思了,如果我们要搜索的内容本身就包含元字符,就可以使用 反斜杠进行转义,使用这样的表达式:   .*.
    eg:import re
      p = re.compile(r‘.*.‘)for one in p.findall(content):
          print(one)
    反斜杠后面接一些字符,表示匹配 某种类型 的一个字符
    d 匹配0-9之间任意一个数字字符,等价于表达式 [0-9]
    D 匹配任意一个不是0-9之间的数字字符,等价于表达式 [^0-9]
    s 匹配任意一个空白字符,包括 空格、tab、换行符等,等价于表达式 [ fv]
    S 匹配任意一个非空白字符,等价于表达式 [^ fv]
    w 匹配任意一个文字字符,包括大小写字母、数字、下划线,等价于表达式 [a-zA-Z0-9_],缺省情况也包括Unicode文字字符,如果指定 ASCII 码标记,则只包括ASCII字母
    W 匹配任意一个非文字字符,等价于表达式 [^a-zA-Z0-9_]
    反斜杠也可以用在方括号里面,比如 [s,.] 表示匹配 :任何空白字符,或者逗号,或者点
    8、方括号-匹配几个字符之一,表示要匹配 指定的几个字符之一
      [abc] 可以匹配 a, b, 或者 c 里面的任意一个字符。等价于 [a-c] 。
      [a-c] 中间的 - 表示一个范围从a 到 c
    如果在方括号中使用 ^ , 表示 非 方括号里面的字符集合,[^d] 表示,选择非数字的字符
    9、起始、结尾位置 和 单行、多行模式
    ^ 表示匹配文本的 开头 位置。
    正则表达式可以设定 单行模式 和 多行模式
    如果是 单行模式 ,表示匹配 整个文本 的开头位置,如果是 多行模式 ,表示匹配 文本每行 的开头位置。
    content = ‘‘‘001-苹果价格-60
                  002-橙子价格-70
                  003-香蕉价格-80‘‘‘
    eg:import re
        p = re.compile(r‘^d+‘, re.M)for one in p.findall(content):
            print(one)
    注意:compile 的第二个参数 re.M ,指明了使用多行模式
    $ 表示匹配文本的 结尾 位置。
      如果是 单行模式 ,表示匹配 整个文本 的结尾位置,如果是 多行模式 ,表示匹配 文本每行 的结尾位置
      比如,下面的文本中,每行最前面的数字表示水果的编号,最后的数字表示价格001-苹果价格-60,002-橙子价格-70,003-香蕉价格-80,如果我们要提取所有的水果编号,用这样的正则表达式       d+$
    10、竖线-匹配两者之一,表示 匹配 前者 或 后者,竖线在正则表达式的优先级是最低的, 这就意味着,竖线隔开的部分是一个整体
    11、括号-组选择,括号称之为正则表达式的 组选择,是从正则表达式匹配的内容里面扣取出其中的某些部分
      从下面的文本中,选择每行逗号前面的字符串,也 包括逗号本身
      苹果,苹果是绿色的
      橙子,橙子是橙色的
      香蕉,香蕉是黄色的
    就可以这样写正则表达式   ^.*, 。
    但是,如果要求 不要包括逗号 呢,当然不能直接这样写 ^.* 因为最后的逗号是特征所在,如果去掉它,就没法找逗号前面的了,但是把逗号放在正则表达式中,又会包含逗号,所以使用组选择符 : 括号,我们这样写   ^(.*),
    eg:import re
      p = re.compile(r‘^(.*),‘, re.MULTILINE)for one in p.findall(content):
          print(one)
    可以多次使用,我们要从下面的文本中,提取出每个人的 名字 和对应的 手机号
    张三,手机号码15945678901
    李四,手机号码13945677701
    王二,手机号码13845666901
    可以使用这样的正则表达式 ^(.+),.+(d{11})
    eg:import re
      p = re.compile(r‘^(.+),.+(d{11})‘, re.MULTILINE)for one in p.findall(content):
          print(one)

 

以上是关于python基础的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

python 有用的Python代码片段

Python 向 Postman 请求代码片段

python [代码片段]一些有趣的代码#sort

使用 Python 代码片段编写 LaTeX 文档

python 机器学习有用的代码片段