美文网首页
python高级编程(列表,元组,集合)

python高级编程(列表,元组,集合)

作者: 原来不语 | 来源:发表于2018-06-22 16:02 被阅读0次

    任务描述:如何在列表、字典、集合中根据条件筛选数据

    列表:

    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。 
    

    该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

    filter(function, iterable)
            function -- 判断函数。
            iterable -- 可迭代对象。
    
    from random import randint
    data = [randint(-10, 10) for _ in range(10)]   #利用列表生成式构造一个列表
    print(data)
    data1 = filter(lambda x: x >=0, data)  #利用filter函数进行条件筛选
    print(list(data1))  #输出筛选后的结果
    
    注:
       filter()函数在python2 中直接打印map,filter函数会直接输出结果,返回的是过滤后的列表。
       而python3中返回到是一个filter类,filter类实现了__iter__和__next__方法,
       可以看成是一个迭代器,有惰性运算的特性, 相对python2提升了性能, 可以节约内存.输出前需要
       使用list() 进行显示转换
    

    法二:

    from random import randint
    data = [randint(-10, 10) for _ in range(10)]
    data2 = [x for x in data if x >=0]
    print(data2)
    
    链表推导式提供了一个创建链表的简单途径,无需使用 map(), filter() 以及 lambda。
    返回链表的定义通常要比创建这些链表更清晰。每一个链表推导式包括在一个for语句之后的表达式,
    零或多个for或多个if语句。返回值是由for或if子句之后的表达式得到的元素组成的链表。
    如果想要得到一个元组,必须要加上括号。
    
    image.png

    字典

    任务描述:构建一个字典用于存储学生与成绩,学生编号1-20 成绩为60-100之间的随机值,
    然后通过字典解析提取出值大于90的学生的成绩和学号
    from random import randint
    d = {x: randint(60, 100) for x in range(1,21)}
    print(d)
    print({k for k in d if k>10})
    print({v for v in d.values() if v>90}) 
    print({k for k in d.keys() if k>10})
    k = {k:v for k, v in d.items() if v > 90}
    print(k)
    
    image.png

    集合

    任务描述:在集合中找出可以被3整除的数!
    data = [randint(-10, 10) for _ in range(10)]
    s = set(data)
    print(s)
    s1 = {x for x in s if x % 3 == 0}
    print(s1)
    
    image.png

    相关文章

      网友评论

          本文标题:python高级编程(列表,元组,集合)

          本文链接:https://www.haomeiwen.com/subject/wmpkyftx.html