Python学习文档


根据书上的代码记录的一些东西


一、基本输入与输出

1.print()

a.一条print()语句输出后会自动换行,如果想一次输出多个内容,而且不换行,可以将要输出的内容使用英文半角的逗号分隔(输出不同类型的时候也是用“,”分隔,不要用“+”)。

print(a,b,"要么出众,要么出局")

b.print语句可以输出到文件。

fp = open(r'D:\mr.txt','a+')
print("要么出众,要么出局",file=fp)
fp.close

说明:r:表示后面的字符串完全写入文件,不会解析转义字符等

2.input()

input()可以接收键盘的输入

3.注释

a.单行注释:#
b.多行注释:’’’…’’’,"""…"""
c.中文编码注释:#coding = utf-8 (在文件的第一行加上)

4.代码缩进

采用代码缩进和冒号“:”区分代码的层次,一般是采用一个[Tab]键或4个空格键作为一个缩进量

二、基本数据类型

1.数字类型

(1).整数

十进制整数
八进制整数(0~7组成,0o/0O开头)
十六进制整数(0-9、A-F组成,0x/0X开头)
二进制整数(0-1组成,0b/0B开头)

(2).浮点数

例如:1.414、0.5、-1.732、2.7e2、6.16e-2(科学计数法)等

2.字符串类型

a.’…’:字符串在同一行
b."…":字符串在同一行
c.’’’…’’’:字符串可以在不同行,且保留格式
d."""…""":字符串可以在不同行,且保留格式

3.布尔类型

只有以下几种情况得到的值为假,其余情况为真
▲False或None。
▲数值中的零,包括0、0.0、虚数0。
▲空序列,包括字符串、空元组、空列表、空字典。
▲自定义对象的实例,该对象的_bool_方法返回的False,或_len_方法返回的0。

4.数据类型转换

方法作用
int(x)将x转换成整数类型
float(x)将x转换成浮点型类型
complex(real[,imag])创建一个复数
str(x)将x转换为字符串
eval(x)计算在字符串中有效的Python表达式,并返回一个对象
chr(x)将x转换为一个字符
ord(x)将一个字符x转换为它对应的整数值
hex(x)将一个整数x转换为一个十六进制字符串
oct(x)将一个整数x转换为一个八进制字符串

三、运算符

1.算术运算符

运算符实例
+
-
*
/
%求余,即返回除法的余数
//取整除,即返回商的整数部分
**幂,即返回x的y次方

2.赋值运算符

运算符实例
=简单的赋值
+=加赋值
-=减赋值
*=乘赋值
/=除赋值
%=取余数赋值
//=取整除赋值
**=幂赋值

3.比较运算符

省略

4.逻辑运算符

逻辑与(and)
逻辑或(or)
逻辑非(not)

5.位运算符

运算符含义具体
&位于二进制数对应位都是1,结果位才为1,否则为0
位或二进制数对应位都是0,结果位才为0,否则为1
^位异或二进制数对应位相同时(同时为0或同时为1),结果位才为0,否则为1
~位取反二进制数1修改为0,0修改为1
<<左移位二进制数向左移动指定的位数,溢出丢弃,空位用0补全(左移位运算相当于乘以2的n次幂)
>>右移位二进制数向右移动指定的位数,溢出丢弃,空位正数用0补全,负数用1补全(右移位运算相当于除以2的n次幂)

四、序列

1.索引

索引从前往后由0开始,从后往前由-1开始

2.相关方法

函数/操作参数说明作用
sname[start : end : step]sname:序列的名称
start:开始位置
end:截至位置
step:步长,默认为1
获取序列的一部分
name1 + name2name1:序列的名称
name2:序列的名称
相同类型的序列相加
name * numname:序列的名称
num:数字
将name的内容重复num次
value in sequencevalue :要检查的值
sequence:序列
检查value是否是sequence的成员
len(sname)sname:序列的名称计算序列的长度
max(sname)sname:序列的名称计算序列的最大元素
list()将序列转换为列表
str()将序列转换为字符串
sum()计算元素和
sorted()对元素进行排序
reversed()反向序列中的元素
enumerate()将序列组合为一个索引列表,多用在for循环

五、列表

它是python中内置的可变序列。在形式上所有元素都放在一对中括号“[]”中,两个相邻元素使用逗号“,”分隔。在内容上,可以将整数、实数、字符串、列表、元组等任何类型的内容放入到列表中。

1.创建和删除

  1. 赋值运算符直接创建列表
    listname = [element 1,element 2,……,element n]
  2. 创建空列表
    emptylist = []
  3. 创建数值列表
    list(data)
    data表示可以转换为列表的数据
    例如,list(range(10,20,2)) 得到 [10,12,14,16,18]
  4. 删除列表
    del listname

2.访问列表元素

直接用索引即可访问

3.遍历列表

  1. 直接用for循环实现

    for item in listname:
    	print(item)
    
  2. 使用for循环和enumerate()函数实现

    for index,item in enumerate(listname):
    	print(index,item)
    

    index:保存元素的索引
    item:用于保存获取到的元素值

4.增改删列表

4.1 添加元素

  1. listname.append(obj)
    增加元素,效率高
  2. listname.insert(index,obj)
    在index的位置插入元素,效率不如append()高
  3. listname.extend(seq)
    将要列表seq的全部元素追加到listname的后面

4.2 修改元素

  1. listname[index] = "修改的内容"

4.3 删除元素

  1. del listname[index]
  2. listname.remove("元素值")

4.4 统计计算

  1. 获取指定元素出现的次数

    listname.count(obj)
    
  2. 获取指定元素首次出现的下标

    lisyname.index(obj)
    
  3. 统计数值列表的元素和

    sum(iterable[,start])
    

    iterable:表示要统计的列表
    start:列表最后相加的结果加上start的值

4.5 对列表进行排序

  1. 使用sort()排序

    listname.sort(key=None , reverse=False)
    

    key:表示指定一个从每个列表元素中提取一个用于比较的键
    reverse:为True表示降序排列,False表示为升序排序
    sort()方法会改变列表的元素排列顺序

  2. 内置的sorted()函数实现

    newlistname = sorted(iterable , key=None , reverse=False)
    

    返回值:会返回一个排序好的列表副本
    不会改变原列表的元素排列顺序

5. 列表推导式

  1. 生成指定范围的数值列表

    list = [Expression for var in range]
    
    #例如
    import random
    randomnumber = [random.randint(10,100) for i in range(10)]
    print("生成的随机数为:",randomnumber)
    #生成的随机数为:[38,12,28,26,58,67,100,41,97,15]
    

    Expression :表达式
    var:循环变量
    range:采用range()函数生成的range对象

  2. 根据列表生成指定需求的列表

    newlist = [Expression for var in list]
    
    #例如
    sale = [int(x*0.5) for x in price]
    

    Expression:表达式
    var:变量
    list:用于生成新列表的原列表

  3. 从列表中选择符合条件的元素组成新的列表

    newlist = [Expression for var in list if condition]
    
    #例如
    sale = [x for x in price if x>5000]
    

    Expression:表达式
    var:变量
    list:用于生成新列表的原列表
    condition:条件表达式,用于指定筛选条件

六、元组

也是由一系列特定顺序排列的元素组成,但是它是不可变序列。元组又称为不可变的列表。在形式上所有元素都放在一对小括号“()”中,两个相邻元素使用逗号“,”分隔。在内容上,可以将整数、实数、字符串、列表、元组等任何类型的内容放入到列表中。

1.创建和删除

  1. 赋值运算符直接创建列表

    tuplename = (element 1,element 2,……,element n)
    

    注意:如果要创建的元组值包括一个元素,则需要在定义元组时,在元素的后面加一个“,”

    tuplename = ("世界杯冠军",)     #type = "tuple"
    tuplename = ("世界杯冠军")      #type = "str"
    
  2. 创建空列表

    emptytuple = ()
    
  3. 创建数值列表

    tuple(data)   
    

    data表示可以转换为列表的数据
    例如,tuple(range(10,20,2)) 得到 (10,12,14,16,18)

  4. 删除列表

    del tuplename 
    

2.访问元组元素

直接用索引即可访问

3.修改元组元素

  1. 不能不元组的单个元素值进行修改,只能对整个元组重新赋值
  2. 元组可以进行连接操作,连接的内容必须都是元组。如果要连接的元组只有一个元素时,一定不要忘记后面的逗号。

4.元组推导式

与列表推导式类似,只是将列表推导式中的中括号“[]”修改为小括号“()”

  1. 生成指定范围的数值列表

    list = (Expression for var in range)
    
    #例如
    import random
    randomnumber = (random.randint(10,100) for i in range(10))
    print("生成的元组为:",randomnumber)
    #生成的元组为:<generator object <genexpr> at 0x0000000003056620>
    
    #又如
    import random
    randomnumber = (random.randint(10,100) for i in range(10))
    randomnumber = tuple(randomnumber)
    print("转换后:",randomnumber)
    #转换后:(38,12,28,26,58,67,100,41,97,15)
    

    ▲ 使用元组推导式生成的结果并不是一个元组或者列表,而是一个生成器对象,需要使用该生成器对象可以将其转换为元组或者列表。
    ▲ 要使用元组推导器生成的生成器对象,可以直接通过for循环遍历或者直接通过_next()_/next()方法进行遍历

    #例如
    number = (i for i in range(3))
    print(number._next()_)
    print(number._next()_)
    print(number._next()_)
    number = tuple(number)
    print("转换后:",number)
    #结果
    #0
    #1
    #2
    #转换后:()
    
    #又如
    number = (i for i in range(3))
    for i in number:
    	print(i,end = '')
    print(tuple(number))
    #结果
    #0 1 2 3 ()	
    

    ▲ 无论通过哪种方法进行遍历,如果再想使用该生成器对象,都必须重新创建一个生成器对象,因为遍历后原生成器对象已经不存在了。

  2. 根据元组生成指定需求的元组

    newtuple = (Expression for var in tuple)
    
    #例如
    sale = (int(x*0.5) for x in price)
    
  3. 从元组中选择符合条件的元素组成新的元组

    newtuple = [Expression for var in tupleif condition]
    
    #例如
    sale = [x for x in price if x>5000]
    

5.元组与列表的区别

列表元组
可变序列,元素可以随时更改或者删除不可变序列,其中的元素不可以修改,除非整体替换
可以使用append()、extend()、insert()、remove()、pop()等方法实现添加和修改列表元素没有这样的方法,不能向元组添加和修改元素,同样不能删除元素,但是有连接的概念
可以使用切片进行访问和修改列表中的元素元组也支持切片,但是只能通过切片访问元素,不支持修改
访问和处理速度慢访问和处理速度快,如果只需要对其中的元素进行访问,而不进行任何修改,建议使用元组
列表不能作为字典的键元组可以作为字典的键

七、字典

无序的可变序列,保存的内容是以“键值对”的形式存放的。
  说明:
   ·通过键而不是索引来读取
   ·字典是任意对象的无序集合
   ·字典是可变的,并且可以任意嵌套
   ·字典中的键必须唯一
   ·字典中的键不可变

1.字典的创建和删除

  1. 赋值运算符直接创建字典
    dictionary = {'key1' : 'value1' , 'key2' : 'value2' , ... , 'keyn' : 'valuen}

  2. 创建空列表
    dictionary = {}
    dictionary = dict()

  3. 通过映射函数创建字典
    dictionary = dict( zip(list1 , list2) )
    参数说明:
    dictionary:表示字典名称
    zip()函数:用于将多个列表或元组对应位置的元素组合成元组,并返回包含这些内容的zip对象。

    name = ['邓肯','吉诺比利','帕克']
    sign = ['石佛','妖刀','跑车']
    dictionary = dict(zip(name,sign))
    print(dictionary)
    #结果
    #{'邓肯': '石佛', '吉诺比利': '妖刀', '帕克': '跑车'}
    
  4. 通过给定的“关键字参数”创建字典
    dictionary = dict(key1 = value1 , key2 = value2 ,..., keyn = valuen)

  5. 通过dict对象的fromkeys()创建键为列表,值为空的字典
    dictionary = dict.formkeys(lists)

  6. 删除字典
    del dictionary
    dictionary.clear() 清空字典
    dictionary.pop() 删除并返回指定“键”的元素
    dictionary.popitem() 删除并返回字典中的一个元素

2.访问字典元素

  1. 直接用键访问
    dictionary['key']
  2. 使用字典对象的get()方法
    dictionary.get(key,[defult])
    说明:key为指定的键;defult为可选项,用于指定当指定的键不存在时,返回一个默认值

3.遍历字典

  • 使用以下方法配合for循环”
    dictionary.items() 返回字典的键值对
    dictionary.values() 返回字典的值列表
    dictionary.keys() 返回字典的键列表
    dictionary = {'qq':'84978981', '明日科技':'84978982' , '无语':'0431-84978982'}
    for item in dictionary.items():
    	print(item)
    	
    #结果
    #('qq', '84978981')
    #('明日科技', '84978982')
    #('无语', '0431-84978982')
    
    for key,value in dictionary.items():
    	print(key ,'  ',value)
    	
    #结果
    #qq    84978981
    #明日科技    84978982
    #无语    0431-84978982
    
    for item in dictionary.values():
    	print(item)
    	
    #结果
    #84978981
    #84978982
    #0431-84978982
    
    for item in dictionary.keys():
    	print(item)
    
    #结果
    #qq  
    #明日科技
    #无语
    

4.增改删字典元素

  1. dictionary[key] = value
    不存在key时,是进行插入操作;存在key时,修改相应key的值。
  2. del dictionary[key]

5 字典推导式

与列表推导式类似

八、集合

集合用于保存不重复元素的,有可变集合(set)和不可变集合(frozenset)两种。仅记录set集合。

1.集合的创建和删除

  1. 赋值运算符直接创建集合
    setname = {element 1 , element 2 , element 3 , ... , element n}
  2. 使用set函数创建
    setname = set(iteration)
    说明:
    iteration:表示要转换为集合的可迭代对象,可以使列表、元组、range对象等。也可以是字符串,如果是字符串,则返回的集合将是包含全部不重复字符的集合
  • 注意:在创建空集合时,只能使用set()函数实现,而不能使用“{}”实现,因为在python中,直接使用一对大括号表示创建一个空字典。

2.访问集合元素

  1. 全部输出
  2. 遍历访问

3.集合的添加和删除

  • setname.add(element)
  • setname.remove(element) 移除指定元素
  • setname.pop() 从第一个元素开始移除
  • setname.clear() 清空集合

4.集合的交集、并集和差集运算

“&”交集运算 、 “|”并集运算 、 “-”差集运算

pf = set(['邓肯','加内特','马龙'])
print('大前锋位置的球员有:' , pf ,'\n')
cf = set(['邓肯'],'奥尼尔','姚明')
print('中锋位置的球员有:' , cf ,'\n')
print('交集运算:' , pf&cf ,'\n') #即是大前又是中锋
print('并集运算:' , pf|cf ,'\n') #大前锋和中锋的全部球员
print('差集运算:' , pf-cf ,'\n') #是大前锋但不是中锋

'''
结果:
大前锋位置的球员有: {'邓肯', '马龙', '加内特'}
中锋位置的球员有: {'姚明', '邓肯', '奥尼尔'}
交集运算: {'邓肯'}
并集运算: {'马龙', '奥尼尔', '姚明', '邓肯', '加内特'}
差集运算: {'马龙', '加内特'}
'''

5. 列表、元组、字典和集合的区别

数据结构是否可变是否重复是否有序定义符合
列表可变可重复有序[]
元组不可变可重复有序()
字典可变可重复无序{key:value}
集合可变不可重复无序{}

九、字符串与正则表达式

1. 字符串常用操作

  1. 拼接字符串 “+”
    字符串之间通过“+”进行拼接,不是字符串通过str()转化为字符串后拼接

  2. 计算字符串的长度
    前置知识:数字、英文、小数点、下划线和空格各占一个字节;汉字根据编码的不同所占字节数不同,GBK/GB2312编码中占2个字节,在UTF-8/Unicode中一般占3个字节。

    len(string)
    

    len()计算字符串的长度时,不区分英文、数字和汉字,所有字符都认为是一个字符。

    计算字符串所占的字节数,如下所示代码:

    str1 = '人生苦短,我用python!'
    length1 = len(str1.encode())  #计算UTF-8编码的字符串的长度
    print(length1) 				 #28
    length2 = len(str1.encode('gbk'))  #计算GBK编码的字符串的长度
    print(length2) 				 #21
    
  3. 截取字符串
    ▷ 采用切片方法实现

    string[start : end : step]
    
    #例如
    str1 = "人生苦短,我用python!"
    substr1 = str1[1]  		#截取第二个字符串
    substr2 = str1[5:]		#从第六个字符开始截取
    substr3 = str1[:5]		#从左边开始截取5个字符
    substr4 = str1[2:5]		#截取第3个到第5个字符
    print(substr1 + '/n' + substr2 + '/n' + substr3 + '/n' + substr4)
    #结果
    #生
    #我用python!
    #人生苦短,
    #苦短,
    
  4. 分隔字符串

    str.split(sep, maxsplit)
    

    str:表示要进行分隔的字符串
    sep:用于指定分隔符,可以包含多个字符,默认为None(即所有空字符,包括空格、换行“\n”、制表符“\t”等)
    maxsplit:可选参数,用于指定分隔的次数,如果不指定或者为-1,则分隔次数没有限制,否则返回结果列表的元素个数为maxsplit + 1
    返回值:分隔后的字符串列表

    说明:如果不指定sep参数,那么也不能指定maxsplit参数

  5. 检索字符串

    count()

    str.count(sub[, start[, end]])
    

    参数解释:
      str:原字符串
      sub:要检索的子字符串
      start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索
      end:可选参数,表示检索范围的终止位置的索引,如果不指定,则检索到结尾
    作用:
      检索指定字符串的另一个字符串出现的次数,如果不存在,则返回0,否则返回出现的次数
      
    find()

    str.find(sub[, start[, end]])
    

    作用:
      检索是否包含指定的字符串。如果不存在,则返回-1,否则返回首次出现该字符串时的索引
    rfind() :与find()方法类似,只是从右边开始查找

    index()

    str.index(sub[, start[, end]])
    

    作用:
      检索是否包含指定的字符串。如果不存在,则会抛出异常,否则返回首次出现该字符串时的索引
    rindex() :与index()方法类似,只是从右边开始查找

    startwith()

    str.startwith(sub[, start[, end]])
    

    作用:
      检索是否以指定子字符串开头。如果是则返回True,否则返回False。

    endwith()

    str.endwith(sub[, start[, end]])
    

    作用:
      检索是否以指定子字符串结尾。如果是则返回True,否则返回False。

  6. 字母的大小写转换
     ▷ lower()
      将字符串中的大写字母转换为小写字母
     ▷ upper()
      将字符串中的小写字母转换为大写字母

  7. 去除字符串中的空格和特殊字符
     ▷ strip([chars])
      去除字符串左右两边的空格和特殊字符或者指定的chars
     ▷ lstrip([chars])
      去除字符串左边的空格和特殊字符或者指定的chars
     ▷ rstrip([chars])
      去除字符串右边的空格和特殊字符或者指定的chars

  8. 格式化字符串
      格式化字符串是指先指定一个模板,在这个模板中预留几个空位,然后再根据需要填上相应的内容。这些空位需要通过指定的符号标记(也称占位符),而这些符号还不会显示出来。
      
    ▷ 使用字符串对象的format()方法

    str.format(args)
    其中str用于指定字符串的显示样式(即模板);args用于指定要转换的项,如果有多项,则用逗号分隔。
    在创建模板时,需要使用“{}”和“:”指定占位符,基本语法格式如下:

    {[index] [: [fill] align] [sign] [#] [width] [.precision] [type]]}

    index:可选参数,用于指定要设置的格式的对象在参数列表中的索引位置,索引值从0开始
    fill:可选参数,用于指定空白处要填充的字符
    align:可选参数,用于指定对齐方式(值为“<”表示内容左对齐;值为“>”表示内容右对齐;值为“=”表示内容右对齐,将符号放在填充内容的最左侧,且只对数字类型有效;值为“^”表示内容居中),需要配合width一起使用
    sign:可选参数,用于指定有无符号数(值为“+”表示正数加正号,负数加负号;值为“-”表示正数不变,负数加负号;值为空格表示正数加空格,负数加负号)
    #:可选参数,对于二进制、八进制和十六进制数,如果加上#,表示会显示“0b/0o/0x”前缀,否则不显示前缀
    width:可选参数,用于指定所占宽度
    .precision:可选参数,用于指定保留的小数点数
    type:可选参数,用于指定类型,其值如下表所示

格式字符说明格式字符说明
s对字符串类型格式化b将十进制整数自动转换成二进制表示再格式化
d十进制整数o将十进制整数自动转换成八进制表示再格式化
c将十进制整数自动转换成对应的Unicode字符x或X将十进制整数自动转换成十六进制表示再格式化
e或E转换成科学计数法表示再格式化f或F转换为浮点数(默认小数点后保留6位)再格式化
g或G自动在e和f或者E和F中切换%显示百分比(默认小数点后保留6位)
#定义模板
template = '编号:{:0>9s} \t公司名称:{:s} \t官网: http://www.{:s}.com'
context1 =  template.format('7' , '百度' , 'baidu')
context2 =  template.format('8' , '明日学院' , 'mingrisoft')
print(context1)
print(context2)

#结果
#编号:000000007 	公司名称:百度 	官网: http://www.baidu.com
#编号:000000008 	公司名称:明日学院 	官网: http://www.mingrisoft.com

2. 正则表达式基础

  1. 行定位符
    用来描述子串的边界。
    “^”表示行的开始
    “$”表示行的结尾
  2. 元字符

常用元字符

代码说明
.匹配出换行符以外的任意字符
\w匹配字母、数字、下划线或汉字
\W匹配除字母、数字、下划线或汉字以外的字符
\s匹配单个的空白符(包括 Tab键和换行符)
\S除单个的空白符(包括 Tab键和换行符)以外的所有字符
\d匹配数字
\b匹配单词的开始或结束,单词的分界符通常是空格、标点符号或者换行
^匹配字符串的开始
$匹配字符串的结束
  1. 限字符

常用限字符

代码说明举例
匹配前面的字符零次或多次colou?r, 该表达式可以匹配 colour和color
+匹配前面的字符一次或多次go+gle,该表达式可以匹配的范围从gogle到goo···gle
*匹配前面的字符零次或多次go*gle,该表达式可以匹配的范围从ggle到goo···gle
{n}匹配前面的字符n次go{2}gle,该表达式匹配google
{n,}匹配前面的字符最少n次go{2,}gle,该表达式匹配的范围从google到goo···gle
{n,m}匹配前面的字符最少n次,最多m次employe{0,2},该表达式可以匹配employ、employe和employee三种情况
  1. 字符类
    在方括号中列出要匹配的字符
    [aeiou]   匹配a、e、i、o、u
    [\u4e00-\u9fa5]   匹配任意汉字

  2. 排除字符
    在方括号中加入“^”
    [ ^a-zA-Z]  匹配一个不是字母的字符

  3. 选择字符、转义字符、分组
    “|”、“\”、“()”

3. 正则表达式的使用

在python中使用正则表达式时,是将其作为模式字符串使用的。通常使用原生字符串,即在模式字符串前面加r或R。

  • 使用re模块实现正则表达式操作
    import re
  1. 匹配字符串
  • re.match(pattern , string , [flags])
    参数说明:
    pattern:表示模式字符串,由要匹配的正则表达式转换而来
    string:表示要匹配的字符串
    flags:可选参数,表示标志位,用于控制匹配方式。常用标志见下表。
    返回值:
    match()方法返回一个Match对象,且具有几个方法。
    Match.start() 匹配值的开始位置
    Match.end()  匹配值的结束位置
    Match.span() 匹配值的元组
    Match.string 要匹配的字符串
    Match.group() 匹配到的数据
    作用:
    从字符串的开始位置开始匹配,当第一个字母不符合条件时,则不再进行匹配,直接返回None。
标志说明
A或ASCII对于\w、\W、\b、\B、\d、\D、\s和\S只进行ASCII匹配
I或IGNORECASE执行不区分字母大写的匹配
M或MULTILINE将^和$用于包括整个字符串的开始和结尾的每一行
S和DOTALL使用(.)匹配所有字符,包括换行符
X和VERBOSE忽略模式字符串中未转义的空格和注释
  • re.search(pattern , string , [flags])
    参数说明:
    pattern:表示模式字符串,由要匹配的正则表达式转换而来
    string:表示要匹配的字符串
    flags:可选参数,表示标志位,用于控制匹配方式。常用标志见下表。
    作用:
    从字符串的开始位置开始匹配,不符合就跳到下一个字符,直到找到匹配的字符串,或者没找到,返回找到的第一个匹配的字符串后结束。不仅仅可以在字符串的起始位置搜索,其他位置有符合的匹配也可以。

  • re.findall(pattern , string , [flags])
    参数说明:
    pattern:表示模式字符串,由要匹配的正则表达式转换而来
    string:表示要匹配的字符串
    flags:可选参数,表示标志位,用于控制匹配方式
    作用:
    用于整个字符串中搜索所有符合正则表达式的字符串,并以列表的形式返回。如果匹配成功,则返回包含匹配结构的列表,否则返回空列表。如果在指定的模式字符串中,包含分组,则返回以分组匹配的文本列表。

    import re
    pattern1 = r'[1-9]{1,3}(\.[0-9]{1,3}){3}'    #模式字符串
    str1 = '127.0.0.1  192.168.1.66'
    match = re.findall(pattern1,str1)
    print(match)    
    #结果  ['.1', '.66']
    #根据(\.[0-9]{1,3})分组得到的结果
    
    pattern2 = r'([1-9]{1,3}(\.[0-9]{1,3}){3})'    #模式字符串
    match = re.findall(pattern2,str1)
    print(match)    
    #结果  [('127.0.0.1', '.1'), ('192.168.1.66', '.66')]
    #根据([1-9]{1,3}(\.[0-9]{1,3}){3})分组得到的结果
    
  1. 替换字符串
  • re.sub(pattern , repl , string [, count , flags])
    参数说明:
    pattern:表示模式字符串,由要匹配的正则表达式转换而来
    repl :表示替换的字符串
    string:表示要被查找替换的原始字符串
    count:可选参数,表示模式匹配后替换的最大次数,默认值为0,表示替换所有的匹配
    flags:可选参数,表示标志位,用于控制匹配方式
    作用:
    用户实现字符串替换
  1. 分隔字符串
  • re.split(pattern , string [, maxsplit , flags])
    参数说明:
    pattern:表示模式字符串,由要匹配的正则表达式转换而来
    string:表示要匹配的字符串
    count:可选参数,表示最大的拆分次数
    flags:可选参数,表示标志位,用于控制匹配方式
    作用:
    用于实现根据正则表达式分隔字符串,并以列表的形式返回,其作用与字符串对象的split()方法类似,所不同的就是分隔字符由模式字符串指定

十、选择与循环语句

1.选择语句

  • if 表达式:
    	语句块
    
  • if 表达式:
    	语句块1
    else:
    	语句块2
    
  • if 表达式1:
    	语句块1
    elif 表达式2:
    	语句块2
    elif 表达式3:
    	语句块3
    ……
    else:
    	语句块n
    
  • and		同时满足条件
    or		满足其中一个条件
    not

2.循环结构语句

  • for 迭代变量 in 对象:
    	循环体
    
  • while 条件表达式:
    	循环体
    
  • break:完全终止循环
    continue:直接跳到下一次循环
    
    

十一、函数

1. 创建一个函数

def functionname([parameterlist]):
	[''' commnets''']
	[functionbody]
	
参数说明:
	functionname:函数名称
	parameterlist:可选参数,用于指定向函数中传递的参数
	''' commnets''':可选参数,表示为函数的指定注释
	functionbody:可选参数,用于指定函数体,如果函数什么都不做,可以使用pass语句作为占位符

2. 参数传递

  1. 形式参数与实际参数
  • 形式参数:在定义函数时,函数名后面括号中的参数为“形式参数”,也称形参。
  • 实际参数:在调用函数时输入的参数为“实际参数”,也称实参。
  • 当实参为不可变对象时,进行的时值传递;当实参为可变对象时,进行的是引用传递。
  • 值传递和引用传递的基本区别:进行值传递后,改变形参的值,实参的值不变;而进行引用传递后,改变形参的值,实参的值也一同改变。
  1. 位置参数
  • 位置参数也称必备参数。调用时的数量和位置必须和定义时是一样的。
  1. 关键字参数
  • 指使用形参的名字确定输入的参数值。
    functionname( height = 1.83 , weight = 60 , person = "路人甲")
  1. 为参数设置默认值

    def functionname(..., [parameter1 = defaultvalue1])
    	[functionbody]
    
    参数说明:
    	parameter1 = defaultvalue1:可选参数,用于指定函数中传递的参数,并且为该参数设置
    默认值为defaultvalue1
    
    在定义函数时,指定默认的形参必须在所有参数的最后。
    
  2. 可变参数

  • 可变参数也成为不可变参数,即传入函数中的实际参数可以是0个、一个、两个到任意个。
  • 定义可变参数时,主要有两种形式:一种是*parameter,另一种是**parameter。
  1. *parameter
    这种形式表示接收任意多个实际参数并将其放到一个元组中。

    def printplayer(*name):
    	print('\n我喜欢的NBA球员有:')
    	for item in name:
    		print(item)
    printplayer('邓肯')
    printplayer('邓肯','乔丹','帕克')
    
    '''
    结果
    我喜欢的NBA球员有:
    邓肯
    
    我喜欢的NBA球员有:
    邓肯
    乔丹
    帕克
    '''
    
  2. **parameter

    这种形式表示接收多个显式赋值的实际参数,并将其放到一个字典中。

    def printsign(**sign):
    	print()
    	for key , value in sign.items():
    		print('[' + key + '] 的绰号是: ' + value )
    
    printsign(邓肯 = '石佛' , 罗宾逊 = '海军上校')
    printsign(吉诺比利 = '妖刀' , 帕克 = '跑车' , 鲍文 = '鲍三叔')
    
    '''
    [邓肯] 的绰号是: 石佛
    [罗宾逊] 的绰号是: 海军上校
    
    [吉诺比利] 的绰号是: 妖刀
    [帕克] 的绰号是: 跑车
    [鲍文] 的绰号是: 鲍三叔
    '''
    

3. 返回值

result = return [value]
参数说明:
	resulu:用于保存返回结果,如果返回一个值,那么result中保存的就是返回值中的一个值,该值可以
		任意类型。如果返回多个值,那么result中保存的是一个元组。
	value:可选参数,用于指定要返回的值,可以返回一个值,也可返回多个值。
	
注意:当函数中没有return语句时,或者省略了return语句的参数时,并返回None,即返回空值。

4.匿名函数

result = lambda [arg1 [,arg2,...argn]] : expression
参数说明:
	result:用于调用lambda表达式。
	[arg1 [,arg2,...argn]]:可选参数,用于指定要传递的参数列表,多个参数间使用逗号“,”分隔。
	expression:必选参数,用于指定要传递的参数列表。
import math
r = 10 
result = lambda r : math.pi*r*r
print('半径为',r,'的圆的面积为:',result(r))

'''
结果:
	u半径为 10 的圆的面积为: 314.1592653589793
'''

十二、类和对象

1. 定义类

class ClassName:
	'''类的帮助信息'''
	def __init__(self):
		...

classname = ClassName()

* 类通常会自动创建__init__()方法。__init__()方法必须包含一个self参数,并且必须是第一个参数。
* self是一个指向实例本身的引用。

2. 创建类的成员并访问

  1. 创建实例方法并访问:

    def functionName(self, parameterlist):
    	block
    
    '''
    参数说明:
    	self:必要参数,表示类的实例
    	parameterlist:用于指定除self参数以外的参数,各参数间使用逗号进行分割
    '''
    
  2. 创建数据成员并访问:

  • 类属性:是指定义在类中,并且在函数体外的属性。类属性可以使用类名称或者实例名访问。
  • 实例属性:是指定义在类的方法中的属性,之作用在当前实例中。实例属性只能使用实例名访问。
  1. 访问限制
    可以在属性和方法名前面添加单下划线、双下划线或首尾加双下划线,从而限制访问权限。
  • __foo__:首尾加双下划线表示特殊方法,一般是系统自定义名字。
  • _foo:以单下划线开头的表示protected(保护)类型的成员,只允许类本身和子类进行访问
  • __foo:双下划线表示private(私有)类型的成员,只允许定义该方法的类本身进行访问,而也不能通过创建类的实例访问,但是可以通过“类的实例名._类名__xxx”的方式访问

3. 属性

  1. 创建用于计算的属性
    可以通过@property(装饰器)将一个方法转换为属性,从而实现用于计算的属性,将方法转换为属性后,可以直接通过方法名来访问方法,而不需要添加一对小括号()。

    class Rect:
    	def __init__(self , width , height):
    		self.width = width
    		self.heigh = height
    	@property
    	def area(self):
    		return self.width*self.height
    rect = Rect(800,600)
    print('面积为:',rect.area)
    
  2. 为属性添加安全保护机制
    使用@property实现只读属性

    class TVshow:
    	def __init__(self,show):
    		self.__show = show
    	@property
    	def show(self):
    		return self.__show
    tvshow = TVshow('正在播放《战狼2》')
    print('默认:',tvshow.show)
    #结果: 默认: 正在播放《战狼2》
    

4. 继承

class ClassName(baseclasslist):
	'''类的帮助信息'''
	statement

'''
参数说明:
	baseclasslist:用于指定要继承的基类,可以有多个
'''

其他函数

  • type()
    作用:返回变量类型
  • id()
    作用:返回变量所指的内存空间
  • range(start , end , step):
    参数:
    start:指定计数的起始值
    end:指定计数的结束值。当range()函数中只有一个参数时,即表示指定计数的结束值
    start:指定步长
    作用:用于生成一系列连续的整数

该处使用的url网络请求的数据。


常用python终端命令

生成项目的requirements.txt文件 :pip freeze > requirements.txt
执行requirements.txt文件:pip install -r requirements.txt

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值