"""
推导式:列表/元组的推导式
列表推导式,利用一定的条件 从 一个列表中生成一个新的列表
"""# 1-20数字 输出其中的奇数
l1 =[]for i inrange(1,21):if i %2==1:
l1.append(i)print(l1)
list1 =list(range(1,21))print(list1)
list2 =[i for i in list1 if i %2==1]print(list2)# ["张三","李四", "王X五"] 取名字的姓# ["张三","李四", "王X五"] 获得姓名的长度
l1=["张三","李四","王X五"]print([i[0]for i in l1])print([len(i)for i in l1])# key和value进行互换
d1 ={
"name":"zs","age":20}
d2 ={
}for k, v in d1.items():
d2[v]= k
print(d2)
d3 ={
v: k for k, v in d1.items()}print(d3)
函数的进阶
deffun(a, name):
a +=10
name.append(a)# a = 100# name = []# fun(a, name)# print(a)# print(name)# 当传入的可变类型,函数内发生变化,会影响外部的值# 内部作用域、全局作用域、内置作用域 ----就近原则# a = "ZS"deff():# a = 10# print(a)# abs(a)print(abs)# f()# 内置函数# ① max函数.参数可以散列的值 或列表元组等迭代器# 参数key,遍历得到元素 会经过key对应的函数。之后对处理后的结果求最大值# print(max(1, 2, 4))
l1 =[1,2,3,9,0,"AA"]print(max(l1, key=str))
d1 =[{
"name":"a","age":20},{
"name":"b","age":18},{
"name":"c","age":16}]defget_max(d1):return d1["age"]print(max(d1, key=get_max))# map函数(fun, iter)# 对可迭代对象每一个元素进行遍历,按照某函数进行运算,之后返回运行之后的结果
l2 =[1,2,3,4]deff(i):# 复杂操作return i **2print(list(map(f, l2)))# filter 函数 过滤的 (fun, iter)# 对可迭代对象每一个元素进行遍历, 按照某函数进行运算,返回True/False# 返回True对应位置的元素deff(i):if i %2==0:returnTrueelse:returnFalseprint(list(filter(f, l2)))# [2, 4]# 匿名函数# lambda [参数] : 表达式# lambad x :# lambad x,y : max(x,y)# lambda x : x%2print(list(filter(lambda x:(x %2)==0, l2)))# [2, 4]
l3 =[1,2,3,4]
f =lambda x: x **2print(list(map(f, l2)))
d1 =[{
"name":"a","age":20},{
"name":"b","age":18},{
"name":"c","age":16}]print(max(d1, key=lambda x: x["name"]))
模块
"""
python中每一个文件 都是模块
导入模块:import 模块名字 [as 别名]
导入时 会将整个文件执行一遍
多次导入,仅执行一次
"""# import my_module as m1# import my_module# 精准导入# from 模块名 import 变量/函数名
name ="模块"from my_module import name
print("-----", name)print(name)# 当前文件和模块中的 命名冲突时,调用方式为 就近原则
#my_module.py
name ="zz"deff():print("模块内部")print("结束----------")
面向对象
"""
面向对象 三大特性
多态、封装、继承
类和对象
"""# 定义类"""
class 类名:
属性/变量的定义 通常在__init__()中定义
方法/函数
"""
PI =3.14classCircle:# r = 10def__init__(self, r=10):print("实例化对象时,自动调用该方法,这是初始化函数")
self.r = r
defarea(self):print("面积是", PI * self.r * self.r)# 实例化对象
c1 = Circle()# 通过对象名调用函数。对象名.函数名
c1.area()# person类# name age----属性# show_info():----方法# class PersonclassPerson:def__init__(self,name="zz",age=20):
self.name=name
self.age=age
defshow_info(self):print("姓名是{},年龄是{}".format(self.name,self.age))def__str__(self):return"这是一个person类"def__del__(self):print("对象销毁时自动调用")def__call__(self,*args,**kwargs):print("可以直接通过对象名加()调用")
p1=Person()# print(p1.name)# p1.show_info()
p1()# 特殊方法:__函数名__# __init__在实例化对象时自动调用# __str__ 在打印对象时 自动调用该方法--必须有return语句# __del__ 在对象销毁时自动调用# __call__可以直接通过对象名加()调用print(p1)# 封装# 通过在属性 方法前增加两个下划线---实现私有的机制classPerson1:def__init__(self,name="zz",age=20):
self.__name=name
self.age=age
defshow_info(self):print("姓名是{},年龄是{}".format(self.__name,self.age))
p1=Person1()print(p1.age)