python学习笔记01

Python 学习笔记:
一、列表
1、列表的方法:
1).append() :在列表末尾添加一个元素
2).extend() :在列表末尾添加一个列表
3).insert() :在列表的任意一个位置(第一个参数)插入一个元素(第二个参数)
4).remove() :在列表中删除一个元素,一个参数,元素的名字
5).pop() :从列表中删除一个元素,一个参数,可以是索引也可以是名字,删除的同时返回删除的值
6).count() :一个参数,元素的名字,统计列表中该元素出现个次数
7).index() :一个参数时,元素的名字,返回列表中该元素第一次出现时所在的索引。三个参数时,分别是元素名字、搜索的起始索引和结束索引。
8).reverse :对列表进行倒序。
9).sort :无参数时将列表从小到大排序;参数填 reverse=True时从大到小排列。只能对全数字的列表进行排序
2、列表的操作:
1)del :删除del后面的整个列表
2)列表的切片:
列表名[:3] :返回列表的前三个元素组成的新列表
列表名[1:3] :返回列表中索引为1~2的元素组成的新列表
列表的切片可以用于列表的拷贝(内存中有两份列表数据)
用等号给一个新列表名幅值内存中只有一个份列表数据,操作任一个列表名都会导致另一个列表名访问的数据发生相应的变化
3、列表的运算
1)列表比较 >、<、==、>=、<=,返回值为True 或 False
2)两列表相加:用‘+’连接两个列表会返回一个包含了加号两次两个列表元素的新列表
4)列表与数字n相乘:将列表中的元素复制n次后组成一个新的元素(此处乘号为重复操作符)
5)判断一个元素是否在列表中用 in 或者not in,如:‘123’ in list1,返回值为True 或 False

二、元组
1)元组在单元素时需要在元素后面加逗号’,’
2)元组的操作需要先用列表切片成列表后再操作,操作完后再将操作完后的元组贴回原来的元组的名字即可。

三、字符串
1、字符串的方法:因为字符串是常量,不支持修改,所以通过方法操作后原字符串不变,返回操作后的发生相应变化后的新字符串。
1).capitalize() :把字符串的第一个字母改成大写
2).casefold() :把整个字符串中所有字符改成小写
3).count(sub[,start[,end]]) :返回sub在字符串中出现的次数,start和end参数表示范围,可选。
4).center(width) :将字符串居中并用空格填充中长度为width的新字符串
5).lower() :将所有字符转换成小写
6).upper() :将所有字符转换成大写
7).replace(old,new[,count]) :用new替换掉old,如果count指定则替换次数不超过count次。
8).rstrip([chars]) :不指定chars删除字符串末尾的空格,如指定chars则删除chars
9).lstrip([chars]) :不指定chars删除字符串开头的空格,如指定chars则删除chars
10).strip([chars]) :不指定chars删除字符串首尾的空格,如指定chars则删除chars
11).split(sep=None, maxsplit=-1):不带参数默认以空格为分隔符进行切片,如果maxsplit参数有设置,则仅分隔maxsplit个子字符串,返回切片后的子字符串的拼接列表。sep 将不会出现在返回列表中
12).splitlines(([keepends])):按‘\n’分隔,返回一个包含各行作为元素的裂变,如果keepends参数有设置,则返回前keepends行
13).swapcase() :翻转字符串中的大小写
14).title() :返回标题化(所有单词首字母大写其他字母小写)的字符串
15).isdigit() :全是数字返回True,否则返回False。
16).isalpha() :全是字母返回True,否则返回False
2、杂项
1)str1[::3]表示在整个str中区3的倍数位置的字符,如

>>>str1 = 'i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99'
>>> str1[::3]
'ilovefishc.com'

四、字典
1、字典的内建方法或函数
dict1 = {0: ‘CJ’, 1: ‘CJ’, 2: ‘CJ’, 3: ‘CJ’, 4: ‘CJ’, 5: ‘CJ’, 6: ‘CJ’, 7: ‘CJ’, 8: ‘CJ’, 9: ‘CJ’}
1).keys() :返回字典中所有的键:
dict_keys([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
2).values() :返回字典中所有值:
dict_values([‘CJ’, ‘CJ’, ‘CJ’, ‘CJ’, ‘CJ’, ‘CJ’, ‘CJ’, ‘CJ’, ‘CJ’, ‘CJ’])
3).items() :返回字典中所有的项(键和值):
dict_items([(0, ‘CJ’), (1, ‘CJ’), (2, ‘CJ’), (3, ‘CJ’), (4, ‘CJ’), (5, ‘CJ’), (6, ‘CJ’), (7, ‘CJ’), (8, ‘CJ’), (9, ‘CJ’)])
4).get(key, 【‘note’】) :如果字典中存在key则返回字典中key对应的值,否则原样返回第二个参数中的信息‘note’,第二参数可选。
5).clear() :清空字典。
6).update({key,value}):如果原字典中存在key,则用新的value替换掉原来的,如果不存在key,则将参数里的字典添加到原字典。

五、集合
1、集合里面的元素时唯一的,当将一个列表或者元组转换成一个集合的时候将会去掉所有相同的元素(相同的元素只保留一份):

>>> list1
[0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9]
>>> set(list1)
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

2、集合的内建方法和函数
1).add() :将一个元素添加到集合
2).remove() :从集合中移除一个元素

3、通过 frozenset创建的集合是不可变的,不能被修改,如:set1 = frozenset({1,2,3,4}),如果执行set1.add(6)将会报错。

六、文件
1、文件的打开方式:f = open(‘E:\readme.tet’),返回文件句柄到f
2、文件的内建方法和函数
1).read(size=-1) :从文件中读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回
2).readline() :读取一行
3).tell() :返回当前文件指针(读写到哪了)
4).seek(offset, from) :在文件中移动文件指针,从from(0代表文件起始位置,1代表文件当前位置,2代表文件末尾)偏移offset个字节

3、迭代读取文本中的内容的推荐高效方式:

for each_line in f:
	print(each_line)

七、操作系统
1、在使用文件操作系统前得先使用import关键字导入os模块:import os
2、OS模块中关于文件/目录常用的函数使用方法
1)os.getcwd() :返回当前工作目录
2)os.chdir(path) :改变工作目录,path参数是以字符串的方式传入
3)os.listdir(path = ‘.’) :列举指定目录中的文件名(‘.’表示当前目录,‘…’表示上级目录)
4)os.mkdir(path) :创建单层目录,如果该目录已存在,抛出异常
5)os.makedirs(path) :递归创建多层目录,如该目录已存在,抛出异常,注意:‘E:\a\b’和‘E:\a\c’并不会冲突
6)os.remove(file) :删除文件(参数中只能是文件)
7)os.rmdir(path) :删除单层目录,如果该目录非空则抛出异常,参数只能是目录,即文件名
8)os.removedirs(path) :递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常
9)os.rename(old, new) :将文件old 重命名为 new
10)os.system(command) :运行系统的shell命令
3、os.path模块中关于路径常用的函数使用方法(以下函数前均需加 os.path.)
1)basename(path) :去掉目录路径,单独返回文件名
2)dirname(path) :去掉文件名单独返回目录路径
3)splitext(path) :分离文件名和扩展名,返回(f_name, f_extension)元组
4)getsize(file) :返回指定文件的大小,单位是字节
5)getatime(file) :返回指定文件最近访问时间(浮点型秒数,可用time模块的gmtime()或localtime()函数转换)
6)getctime(file) :返回指定文件的创建时间
7)getmtime(file) :返回指定文件最新修改时间
8)exists(path) :判断指定路径(目录或文件)是否存在
9)isabs(path) :判断指定路径是否是绝对路径
10)

八、匿名函数
匿名函数定义时需使用关键字 lambda,lambda函数能接收任意数量的参数,但只能返回一个表达式的值,匿名函数定义不能超过一行
匿名函数定义的语法:lambda [参数]:表达式。如
func = lambda x, y: x+y #func是定义的匿名函数的指针而不是匿名函数的返回值,此时只是定义函数,所以不可能是func不是函数的返回值。注意在匿名函数中不能用return,函数会自动返回冒号后面的表达式的运算后的结果。
匿名函数的调用。如要调用2中定义的匿名函数,调用方法为result = func(1,3),执行完后result的值为4。

九、爬虫
1、常用请求头信息
1) User-Agent :请求载体的身份标识,包含当前操作系统的版本,当前浏览器版本等信息。
2)Connection :指明请求完毕后,是断开连接还是保持连接
2、常用响应头信息
1)Content-Type:服务器响应客户端的数据类型
3、http协议是没有加密的,https协议是安全的(加密)超文本传输协议

十、正则表达式
1、元字符:指在正则表达式中代表着非字符本身的特殊含义的字符,元字符及其含义如下:
1). :匹配单个任意字符,不包含换行符‘\n’
2)[…] :字符组,匹配中括号内任一个字符
3)[^…] :排除型字符组,匹配中括号中未列出的字符集中任一个字符
4)^ :匹配行的开始
5)$ :匹配行的结束
6)| :或,匹配竖线左边或右边一个或多个字符,不能超越小括号
7)? :其前面的一个字符可以出现也可以不出现,该元字符只作用于其前紧邻的字符,但如果该元字符前面是小括号,则作用于小括号里面的内容这个整体,括号内的内容要么都出现,要么都不出现,只有部分出现无法匹配
8)+ :该元字符之前紧邻的字符或字符组(小括号包裹住)出现一次或多次
9)* :该元字符之前紧邻的字符或字符组(小括号包裹住)出现零次或一次或多次
10)

2、常用元字符组合及含义:
1).* :匹配任意字符

3、其他
1)分组匹配实例
源码:

import re
strs = "Take a break from worrying about what you can't control. Live a little."
match_obj = re.match( r'(.*) worrying (.*?) you.*', strs, re.M|re.I)
if match_obj:
    print("match_obj.group() : ", match_obj.group())
    print("match_obj.group(1) : ", match_obj.group(1))
    print("match_obj.group(2) : ", match_obj.group(2))
else:
    print("No match!!")

运行结果:

match_obj.group() :  Take a break from worrying about what you can't control. Live a little.
match_obj.group(1) :  Take a break from
match_obj.group(2) :  about what

解析:
正则表达式前面的r 表示字符串为非转义的原始字符串,告诉编译器里面的所有字符都按照普通字符来处理,不做任何转义。
正则表达式里面的小括号会有分组效应,在该例中正则表达式里面用了两个小括号,意味着将匹配的结果分成了两个小组,可以通过.group(index)的方式提起任意分组结果,该处的index从0开始,当index为0或省略的时候输出完整的不分组的匹配结果。
第一个分组(.*) 表示的是在strs字符串中从头开始(虽然没有 ^)匹配任意个(包括0个)任意字符直到匹配到 ** worrying**(注意前面有个空格),在这之前的所有字符都划分到第一个分组中。
第二个匹配分组(.*?) ,比第一个分组多了个问号,代表非贪婪模式,表示的是尽可能少地匹配
后面的一个 .* 没有括号包围,所以不是分组,匹配效果和第一个一样,但是不计入匹配结果中。
match_obj.group() 等同于 match_obj.group(0),表示匹配到的完整文本字符
match_obj.group(1) 得到第一组匹配结果,也就是(.*)匹配到的
match_obj.group(2) 得到第二组匹配结果,也就是(.*?)匹配到的
因为只有匹配结果中只有两组,所以如果填 3 时会报错。

2)具名分组匹配
源码:

import re
person = '44092319940xxxxxxx'
res = re.search('(?P<province>\d{3})(?P<city>\d{3})(?P<born_year>\d{4})',person)
print(res.groupdict())

运行结果:

{'province': '440', 'city': '923', 'born_year': '1994'}

解析:
将匹配结果直接转为字典模式,方便后续使用。

注意事项:
1、多选结构可以包括很多字符,但是不能超越小括号的界限

杂项
1、从excel文件中通过.col_values()方法等到的返回值类型为str
2、当一个函数中访问一个全局变量的时候访问的是真正的全局变量,但如果试图去修改全局变量的值,python编译器会创建一个跟全局变量名字一样的局部变量,即使对这个变量进行修改,全局变量也不会发生变化。
3、如果需要在函数中修改全局变量的值,可以在变量名前加关键字 global,然后再另起一行修改如:

def test():
	global count
	count = 10
	return count

4、python 支持函数的嵌套,内嵌函数定义和调用全都在外层函数,其他地方没法不可见。
5、Python中原则上只能修改本作用域内的变量,如果没有做特殊修饰的前提下修改了本作用域外的变量则会报错,即使没有报错,修改的也不是本作用域外的变量,而且在本作用域下新定义的一个新的与作用域外的变量同名的的新变量而已。
6、python 中的逻辑与 and与c语言中有所不同,当 and 前面的表达式为假的时候返回and前面表达式的值,否则返回 and 后面的值。
7、赋值相当于给数据贴多一个标签,数据标签数会加一,但数据不会加一
8、print(’{ [index][ : [ [fill] align] [sign] [#] [width] [.precision] [type] ] }’.format())
.format() 前面的{}内的可选参数可以有可以没有,如有顺序不可乱。
1)index:指定后边设置的格式要作用到 args 中第几个数据,数据的索引值从 0 开始,也可以用字母。如果省略此选项,则会根据 args 中数据的先后顺序自动分配。
2)fill:指定空白处填充的字符。注意,当填充字符为逗号(,)且作用于整数或浮点数时,该整数(或浮点数)会以逗号分隔的形式输出,例如(1000000会输出 1,000,000)。
3)align:指定数据的对齐方式:
< :数据左对齐。

:数据右对齐。
= :数据右对齐,同时将符号放置在填充内容的最左侧,该选项只对数据类型有效。
^ :数据居中对齐,此选项需和width参数一起使用。
4)sign:指定有无符号数:

  • :正数前加正号,负数前面加负号。
  • :正数前不加正号,负数前加负号。
    空格 :正数前加空格,负数前加负号。
    # :对于二级制、八进制和十六进制数使用该参数会在数据前面分别显示0b、0o、0x前缀,不使用则不显示。
    5)width:指定输出数据时所占的位宽。
    6).precision:指定保留的小数位数。
    7)type:指定输出数据的具体类型:
    s :按字符串格式输出
    d :按十进制整数输出
    c :将十进制整数自动转成对应的Unicode字符输出
    e或者E :转化成科学计数法输出
    f或者F :转化成小数形式输出,默认保留小数点后6位
    g或者G:python将根据自己的规格决定按小数还是科学计数法输出
    b :将十进制转化成二进制数再输出,没有0b前缀
    o :将十进制转化成八进制数再输出,没有0o前缀
    x或者X :将十进制转化成十六进制数再输出,没有0x前缀
    % :按百分比的形式显示,默认保留小数点后6位
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值