企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] ## 列表推导式 列表推导式(又称列表解析式),可以便捷生成指定条件的列表 格式如: ```python variable = [out_exp for out_exp in input_list if out_exp == 2] ``` out_exp:输出表达式 指定条件,主要从 for xx in xx if xx 中产生。 加上有个列表tmp_list = [1,2,3,4,5,6],如果我们想过滤出其中大于3的元素,然后各自乘以2,生成一个新的列表,我们可以如下面这般实现: ```python tmp_list = [1, 2, 3, 4, 5, 6] alist = [x * 2 for x in tmp_list if x > 3] print(alist) ``` 代码解释: `[x * 2 for x in tmp_list if x > 3]` 中,x\*2 是最终的输出表达式,其中x是后面条件表达式 `for x in tmp_list if x>3` 中符合条件的输出值。 ## map 函数 map函数会将一个函数映射到一个输入列表的所有元素上。 格式: ```python map(func, *iterables) ``` 假设我们需要将一个列表中的每个元素都乘以2,获得一个新的列表,则我们可以如下面这般实现。 ```python tmp_list = [1,2,3,4,5,6] alist = list(map(lambda x:x*2,tmp_list)) print(alist) ``` 输出结果如下: ```cmd [2, 4, 6, 8, 10, 12 ``` map函数,会逐一**将可迭代对象的每个元素作为func函数的入参**,进行计算后,返回一个map对象。 ## filter 函数 filter过滤列表中的元素,并且**返回一个由所有`符合要求`的元素所构成的列表** 格式为: ```python filter(func or None, iterable) ``` map函数,会逐一**将可迭代对象的每个元素作为func函数的入参**,进行计算后,返回一个filter对象。 假设,我们需要过滤一个列表,过滤出大于3的元素,则我们可以如下这般实现: ```python tmp_list = [1,2,3,4,5,6] alist = list(filter(lambda x:x>3,tmp_list)) print(alist) ``` 输出结果如下: ```cmd [4, 5, 6] ``` ## sorted 函数 sorted函数 对一个可迭代的对象进行排序操作,返回一个新的列表。可以自定义排序的方法,默认是升序,但是也可以指定为降序。 格式为: ```python sorted(iterable, ,key=None, reverse=False) ``` 参数 `key`用于**指定用于比较的对象**,key函数的参数就是取自于可迭代对象(iterable)中的 **`一个`** 元素来进行排序。注意,key函数只接受一个入参。 实例一: 例如有四个学生,格式如("姓名","年龄","成绩"),根据不同的条件进行排序,如下 ```python student_list = [('a',18,90),('c',20,99),('b',19,80),('d',15,100)] sort_by_age = sorted(student_list,key=lambda student:student[1]) print(sort_by_age) ``` 排序字段是student[1],也就是每个学生的第二个字段“年龄”,所以按年龄升序排列,运行结果如下: ```cmd [('d', 15, 100), ('a', 18, 90), ('b', 19, 80), ('c', 20, 99)] ``` <br> 实例二: 假设有个学生类,创建出三个学生对象,每个对象有属性“姓名”,“年龄”,“成绩”。如下 ```python class Student(object): def __init__(self, name, age, score): self.name = name self.age = int(age) self.score = float(score) s1 = Student("Milton", 31, 80) s2 = Student("Cherish", 32, 100) s3 = Student("Evan", 27, 90) ``` 如果我们想对这三个学生排序,**根据成绩降序排序**,则该如何实现呢? ```python stu_list = [s1, s2, s3] sort_by_score = sorted(stu_list, key=lambda stu: stu.score,reverse=True) # sort_by_score 其实已经做好了排序,但是为了显示直观,下面将每个学生的姓名与成绩打印出来。 print(list(map(lambda stu:(stu.name,stu.score),sort_by_score))) ``` 运行结果如下: ```cmd [('Cherish', 100.0), ('Evan', 90.0), ('Milton', 80.0)] ``` <hr style="margin-top:100px"> :-: ![](https://box.kancloud.cn/2ff0bc02ec938fef8b6dd7b7f16ee11d_258x258.jpg) ***微信扫一扫,关注“python测试开发圈”,了解更多测试教程!***