"""
推导式:列表/元组的推导式
列表推导式,利用一定的条件 从 一个列表中生成一个新的列表
"""# 1-20数字 输出其中的奇数# 1>方法1
l1 =[]for i inrange(1,21):if i %2==1:
l1.append(i)print(l1)# 2>方法2
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进行互换# 1>方法1
d1 ={"name":"zs","age":20}
d2 ={}for k, v in d1.items():
d2[v]= k
print(d2)# 2>方法2
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))# AA
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))# {'name': 'a', 'age': 20}# map函数(fun, iter)# 对可迭代对象每一个元素进行遍历,按照某函数进行运算,之后返回运行之后的结果
l2 =[1,2,3,4]deff(i):# 复杂操作return i **2print(list(map(f, l2)))# [1, 4, 9, 16]# 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)))# [1, 4, 9, 16]
d1 =[{"name":"a","age":20},{"name":"b","age":18},{"name":"c","age":16}]print(max(d1, key=lambda x: x["name"]))# {'name': 'c', 'age': 16}
六、模块
"""
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("结束----------")