一.基础数据类型的划分
可变/不可变:
可变:列表、集合、字典(可以进行更改,并且更改后物理地址不会发生改变)
不可变的:数字、字符串、元组(不可以进行更改,更改后就是一个新的对象了,物理地址发生了变化)
有序/无序:
有序序列包括:列表,元组,字符串 (list,tuple,string)-支持索引和切片
无序序列包括:字典,集合,(dictionary,set )
二.列表和集合的区别
相同点:
a:都是可变的,可以对列表进行增删改查的操作。
对于查找操作,集合的性能明显优于列表,因为集合使用了哈希表来存储元素,可以在较短的时间内进行快速查找
对于增删操作,列表的性能会略优于集合,因为列表的底层实现是基于数组,可以进行快速的随机访问和修改,而集合的底层实现是哈希表,针对某些情况下需要重新构建哈希表。
不同点:
a:列表是有序的,集合是无序的
b:列表中中括号[]表示,集合用大括号{}表示
c:列表数据可重复,集合不可重复
Python列表和集合是可以相互转换的,需要使用内置函数list()和set()进行转换。
三.列表和元组的区别
相同点:
a.都是有序的
都可以存储任何数据类型
可以通过索引访问
都是有序的
都支持切片操作
不同点:
a.列表是可变的,元祖是不可变的
b.列表 以随意的增加、删除、修改元素,元素则不可以
d.定义列表时候使用中括号"[]“,定义元组时候使用小括号”()"
e.元祖的操作效率更高
四.字典和集合的区别
相同点:
都是用大括号“{}”
都是无序且可变的
不同点:
集合不能用索引
字典是键和值的配对,集合是一系列无序的、唯一的元素组合
五.python列表排序
sort() :不返回新列表,而是直接修改原始列表,默认升序
列表.sort(reverse=True) #倒叙
sorted():它返回一个新的已排序列表,而不会改变原始列表,默认升序
sorted(列表,reverse=True) #倒叙
六:python 统计log文件有多少小写字母
a.用open打卡log文件,如果有中文,需要设置 字符编码 utf-8
b.读取文件的内容,读取出的格式为字符串
c.用正则表达式求出文件中的小写字母,读取的格式是list列表
d.求出列表的长度,即是小写字母的个数
a = os.path.dirname(file)
b = os.path.join(a,“filelog.log”)
print(b)
fs = open(b, encoding=“utf-8”)
content = fs.read()
print(content)
len_da = len(re.findall(r’[a-z]', content)) # 把大写字母单个的整合到一个列表里边,并计算长度
print(‘小写字母有%d个’ % len_da)
七:Python 中 *args 和 **kwargs 的作用
我们不确定将多少个参数传递给函数时使用,args用于元祖,**kwargs用于字典,同时使用*args和kwargs时,*args参数必须要列在kwargs前,否则会报错
八.Python中的self是什么?
self是类的实例或对象,init方法中的self变量引用新创建的对象,而在其他方法中,它引用其方法被调用的对象。
九.什么是装饰器
python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,主要用来看日志和统计案例执行时间
十.字符串去重
s = “ajldjlajfdljfddd”
s = set(s)
s = list(s)
s.sort(reverse=False)
res = “”.join(s)
十一:字符串的基本操作
1.取值 字符串[下标]
2.获取字符串的长度 len(字符串)
3.切片(截取一部分字符串) 格式:字符串[起始索引:结束索引:步长] 取头不取尾
4.替换 replace(旧,新)
5.查找 find通过元素找索引,找到返回索引,找不到返回-1;index通过元素找索引,找到返回索引,找不到返回error
6.删除字符串前后的空格/字符 s.strip()
7.字符串分割:使用split方法来将字符串按照指定的分隔符进行分割,返回一个列表,s.split() # 默认就是以空格作为分隔符
8.字符串连接:使用join方法来将多个字符串连接为一个字符串,拼接符.join(列表) #拼接符也是字符串类型
9.无规则,拼接2个字符串 +