python-list高级处理

  1. 列表推导式
  2. map 函数
  3. filter 函数
  4. sorted 函数

列表推导式

  • 列表推导式(又称列表解析式),可以便捷生成指定条件的列表

    格式如:

    [out_exp for out_exp in input_list if out_exp == 2]
  • 假如有个列表tmp_list = [1,2,3,4,5,6],如果我们想过滤出其中大于3的元素,然后各自乘以2,生成一个新的列表,我们可以如下面这般实现:

    [x * 2 for x in tmp_list if x > 3]

map 函数

  • map函数会将一个函数映射到一个输入列表的所有元素上。

    格式:map(func, *iterables)

  • 假设我们需要将一个列表中的每个元素都乘以2,获得一个新的列表,则我们可以如下面这般实现。

    list(map(lambda x:x*2,tmp_list))

    map函数,会逐一将可迭代对象的每个元素作为func函数的入参,进行计算后,返回一个map对象。

    filter 函数

  • filter过滤列表中的元素,并且返回一个由所有符合要求的元素所构成的列表

    格式:filter(func or None, iterable)

  • 假设,我们需要过滤一个列表,过滤出大于3的元素,则我们可以如下这般实现:

    list(filter(lambda x:x>3,tmp_list))

    filter函数,会逐一将可迭代对象的每个元素作为func函数的入参,进行计算后,返回一个filter对象。

    sorted 函数

  • sorted函数 对一个可迭代的对象进行排序操作,返回一个新的列表。可以自定义排序的方法,默认是升序,但是也可以指定为降序。

    格式如:sorted(iterable, ,key=None, reverse=False)

    参数key函数用于指定用于比较的对象,key函数的参数就是取自于可迭代对象(iterable)中的 一个 元素来进行排序。注意,key函数只接受一个入参。

  • 例如有四个学生,格式如(“姓名”,”年龄”,”成绩”),根据不同的条件进行排序,如下

    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])
  • 假设有个学生类,创建出三个学生对象,每个对象有属性“姓名”,“年龄”,“成绩”。如下

    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)
    stu_list = [s1, s2, s3]
    # 根据成绩降序排序
    sort_by_score = sorted(stu_list, key=lambda stu: stu.score,reverse=True)

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
My Show My Code