小程序制作网站,学校网站建设招聘,查看wordpress版本,做擦边球的网站【版权声明】未经博主同意#xff0c;谢绝转载#xff01;#xff08;请尊重原创#xff0c;博主保留追究权#xff09; https://blog.csdn.net/m0_69908381/article/details/132368704 出自【进步*于辰的博客】 相关博文#xff1a;【python细节、经验】锦集。 注#… 【版权声明】未经博主同意谢绝转载请尊重原创博主保留追究权 https://blog.csdn.net/m0_69908381/article/details/132368704 出自【进步*于辰的博客】 相关博文【python细节、经验】锦集。 注本文可能不适合 0 python基础的博友因为对于各类知识点我阐述的宗旨是“阐明使用细节”而不是基础知识。 文章目录 1、特殊指令符1.1 del xx 2、内置函数3、关于列表list3.1 切片示例3.2 方法 4、关于元组tuple5、关于字典map5.1 概述5.2 方法 6、关于集合set6.1 概述6.2 方法 7、关于变量7.1 分类7.2 可变参数7.2.1 *args格式7.2.2 **args格式7.2.3 特殊用法 8、关于lambda表达式8.1 特点8.1 用法1简化函数 9、关于面向对象最后 1、特殊指令符
1.1 del xx
1、del list[索引] # 删除列表元素
2、del tuple # 删除整个元组
3、del map[key] # 删除字典映射2、内置函数
摘要参数说明返回值类型/返回值说明list(tuple t)列表将元组转换成列表。注不修改原元组range(int max)序列最大值序列此方法作用很多此处的作用是指定一个最大值返回0 ~ max - 1的序列常用于遍历filter(a, b)a 是方法即过滤条件b 是序列序列过滤序列需与lambda连用示例见相关博文第4项
3、关于列表list 参考笔记二P25.3~5。 3.1 切片示例
例list [1, 2, 3, 4]则list[-3:] [2, 3, 4]、list[:3] [1, 2, 3]故list[-3: 3] [2, 3]。由于[2, 3] [2, 3, 4] 并 [1, 2, 3]因此list[-3: 3] list[-3:] 并 list[:3]例list[a: b: x]其中a 是起始索引b 是终止索引x 是步长。若x 0则从左往右切片否则从右往左切片。
注实际切片内容并不一定是按照[a, b)即 a → b或(b, a]即 b → a规则进行切片。由于a/b/x三者都有“正负”2种情形因此实际的切片情况很多我暂且没有找到规律因此只能按照示例1的“拆分”方法进行分析。 具体方法
1、将 [a: b: x] 拆分d成 [a: : x] 和 [: b: x];
2、计算[a: : x]a 为起始索引若x 0则向右取所有否则向左取所有。得到[list[a], ...];
3、计算[: b: x]b 为终止索引同理得到[..., list[b]];
4、结果取两者交集.3.2 方法
摘要参数说明返回值类型/返回值说明append(Object o)追加一个元素extend(List it)追加列表insert(int i, Object o)插入元素pop(int i)返回被删除元素删除元素。若不指定则删除最后一个元素remove(Object o)移除匹配的第一个元素index(Object o)索引查找匹配的第一个元素。若找不到则报错reverse()反转列表。相当于list[::-1]count(Object o)int计数sort()排序默认升序。注列表所有元素类型必须一致
注
列表元素类型可混搭切片时若索引超出范围不报错。
4、关于元组tuple 参考笔记二P33.1。 概述
元组自创建后无法修改若元组只有一个元素则末尾必须添加一个,否则其类型就不是元组而是此元素类型元组无法修改但基本支持列表拥有的查询系列方法如count()、index()故元组的查询效率高于列表元组的作用之一。
示例
t (2023)
print(type(t))
t (2023,)
print(type(t))
print(t.count(2023))
print(t.index(2023))打印结果
5、关于字典map 参考笔记二P33.2。 5.1 概述
添加映射时若 key 已存在则覆盖 value用“{}”表示空字典访问不存在的 key 时报错当为不存在的 key 赋值时添加此映射
示例
m {}
print(type(m)) # 打印class dict
m {name : yuchen,year : 2023
}
# print(m[age]) # 报错KeyError5.2 方法
1、clear()清空字典无返回值。
2、copy()复制字典属“浅复制”。
3、fromkeys(a, b)创建字典。 注a 是序列b 是默认值可不指定。 示例
m {} # 空字典l [2, 0, 2, 3]
m m.fromkeys(l) # 使用列表构建字典
print(m)
m m.fromkeys(l, 0) # 指定所有映射的 value 为 0即默认值
print(m)t (2023,)
m m.fromkeys(t) # 使用元组构建字典
print(m)s set([2, 0, 2, 3])
m m.fromkeys(s) # 使用集合构建字典
print(m)打印结果
4、get(a, b)获取 value。 注a 是 keyb 是默认值当 key 不存在时作为返回值可不指定。若 key 不存在则返回None。
5keys()返回包含字典所有 key 的“列表”。 注表面上看是列表实则不是用type()即可验证在某些情况下类似列表。此方法常用于判断字典是否包含某个 key。
6values()返回包含字典所有 value 的“列表”。
7、items()类似java中的map.entrySet()常用宇遍历字典。
6、关于集合set 参考笔记二P33.3。 6.1 概述
无重复值定义集合必须使用set()方法构造有元素集合时可以使用任意序列集合不能使用“*”或“连接”集合常用宇数字意义上的集合操作如交集、并集|、对称差集^列表则不行。
示例
s set()
print(s)
print(type(s))s1 set((2, 0, 2, 3))
print(s1)
s2 set([c, s, d, n])
print(s2)s3 s1 s2 # 返回两集合相同元素的集合
print(s3)
s3 s1 | s2 # 返回两集合所有元素合集若有相同元素仅保留一个
print(s3)
s3 s1 - s2 # 等同于 s1 - (s1 s2)即返回s1去除s1与s2相同元素后的集合
print(s3)
s3 s1 ^ s2 # 等同于 (s1 - s2) | (s2 - s1)
print(s3)打印结果
6.2 方法
摘要参数说明返回值类型/返回值说明add(Object o)追加元素remove(Object o)移除元素。若元素不存在报错
7、关于变量 参考笔记二P34.8。 7.1 分类
必须参数指方法调用时必须指定的参数其实就如 java 中的实参要求个数、类型对应关键字参数指方法调用时通过形参名值的方式指定实参故可忽略实参顺序默认参数指方法定义时已指定默认值的参数且必须定义在最后调用时可不指定可变参数指不能在定义方法时确认参数的个数和内容类型所使用的参数组合参数。
7.2 可变参数
7.2.1 *args格式
接收“序列”相当于 java 中的可变参数args的类型是“元组”。
示例
def show(*args):for e in args:print(e)# 如 java 中的”xx...“会将一组数自动封装成数组在此处是序列
show(2023, csdn)# java 中的可变参数也可这样定义实参不过不允许直接这样初始化也有点多此一举
# 而在此处尽管 [2023, csdn] 是一个序列但 args 仅将其视为一个元素因此无法遍历直接打印出“[2023, csdn]”
show([2023, csdn])# (2023, ), (csdn,)是两个元组最后args 会封装成 ((2023, ), (csdn,))
show((2023, ), (csdn,))打印结果 改进为调用show([2023, csdn])时能遍历其内元素
def show(*args):for e in args:if isinstance(e, list):for i in e:print(i)else:print(e)打印结果
7.2.2 **args格式
表示“字典”固定实参必须是关键字参数也可是字典但需要使用**标识往下看。
示例
def show(**args):# 因为 args 固定为字典因此可调用成员方法 items()for k,v in args.items():print(k, v)show(year2023, flagcsdn)打印结果
7.2.3 特殊用法
我暂且不知如何描述看示例
1、上述*args的示例也可这样改
l [2023, csdn]
show(*l)
# 或
show(*range(10))即指明其是一个列表这样*args就不会将其视为一个元素。
总结若实参是一组数如1, 2, 3则*args可将其封装成元组若实参为序列如{1, 2, 3}、range(10)则*args会将其视为一个元素或报错此时就需采用此特殊用法。
2、**args的实参可使用字典上述**args的示例可这样改
m {year: 2023,flag: csdn
}
show(**m)即指明其是一个字典。
注 若*args与**args连用也可使用此特殊用法进行指定。不过顺序不可调换使用关键字参数也不行。
8、关于lambda表达式 参考笔记二P34.10。 8.1 特点
lambda 语句块只会执行一次不存在被外部程序反复调用可能在某些函数必须使用函数作为参数但是函数本身十分简单且只有一处使用。
8.1 用法1简化函数
示例
def calculate(x, y):return x y, x - yt calculate(10, 20)lambda 改进
f lambda x, y: [x y, x - y] # 相当于方法定义
print(type(f)) # 打印class function
t f(10, 20)冒号:左边是参数列表右边是返回值。
9、关于面向对象 参考笔记二P35.13。 注以下阐述都基于类。
1、构造方法__init__(self)的返回值必须是None即无返回值指无返回值并不是说需要手动指定return None
2、所有方法的第1个参数都是self代指实例可更名
3、在所有方法中由self定义的变量都是成员变量而直接定义的变量不是成员变量仅是局部变量其生命周期仅在函数内在方法外定义的变量是类变量 示例
# 此示例中的3个 name 是3个变量即3个定义没有重赋值
class Platform:name csdn # 定义类变量def __init__(self, name):self.name bilibili # 定义成员变量self.name name # 为成员变量 name 重赋值# 这不是为类变量/成员变量 name 重赋值而是定义局部变量# 因此在此示例中在类外无法访问name 博客园print(Platform.name) # 访问类变量打印csdn# 实例化。实例化时由于仅定义了一个带有一个参数的构造方法因此需要指定一个实参
p1 Platform(开源中国)
print(p1.name) # 访问成员变量打印开源中国4、在变量前加__双下划线表示私有变量。在 java 中私有成员变量的作用域为当前类而 python 中私有实例变量即成员变量的作用域为所有方法因为第2点 示例
class Platform:def __init__(self, name):self.__name namedef getName(self):return self.__namep1 Platform(csdn)
print(p1.getName()) # 打印csdn5、在方法前加__表示私有方法私有方法只能在类内部调用实例不能直接调用此性质与 java 相同 示例
class Platform:def __init__(self, name):self.__name namedef __getName(self):return self.__namedef toString(self):print(name self.__getName())p1 Platform(csdn)
p1.toString() # 打印name csdn最后
本文中的举例是为了方便大家理解、以及阐述相关知识点而简单举出的不一定有实用性也不一定有针对性比如集合运算目的是获取两集合相同元素而第6.1项的示例中我没有刻意去定义s1、s2包含了相同元素。我之所以如此
这些细节很简单大家在其他编程语言或课程、书本或资料上肯定或多或少接触过或完全知道因此没必要特意举例本文阐述的宗旨是“阐明使用细节”而对于其他附属知识并不一定会细致说明。
因此一些细节需要大家自行测试或查找资料。
本文持续更新中。。。