您的位置:68399皇家赌场 > 集群主机 > python怎么样在列表、字典中筛选数据

python怎么样在列表、字典中筛选数据

发布时间:2019-06-01 13:55编辑:集群主机浏览(69)

    mylist= [1, 4, -5, 10, -7, 2, 3, -1]
    正数为: [1, 4, 10, 2, 3]
    负数为: [-5, -7, -1]
    

    Python cookbook(数据结构与算法)筛选及领取序列兰月素的艺术,pythoncookbook

    本文实例讲述了Python筛选及领取种类瓜月素的法子。分享给大家供大家参谋,具体如下:

    问题:领到出行列中的值可能依赖某个正式对队列做去除

    消除方案:列表推导式、生成器表明式、使用内建的filter()函数

    1、列表推导式方法:存在二个机密的症结,假使输入数据至极大恐怕会发生3个硕大的结果,考虑到该难点,建议选取生成器表明式

    # Examples of different ways to filter data
    mylist = [1, 4, -5, 10, -7, 2, 3, -1]
    print('mylist=',mylist)
    # 使用列表推导式
    pos = [n for n in mylist if n > 0]
    print('正数为:',pos)
    neg = [n for n in mylist if n < 0]
    print('负数为:',neg)
    

    运营结果:

    mylist= [1, 4, -5, 10, -7, 2, 3, -1]
    正数为: [1, 4, 10, 2, 3]
    负数为: [-5, -7, -1]
    

    贰、生成器表明式方法:

    mylist = [1, 4, -5, 10, -7, 2, 3, -1]
    print('mylist=',mylist)
    # 使用生成器表达式
    pos = (n for n in mylist if n > 0)
    print('生成器为',pos)
    for x in pos:
      print(x)
    

    运营结果:

    mylist= [1, 4, -5, 10, -7, 2, 3, -1]
    生成器为 <generator object <genexpr> at 0x02421FD0>
    1
    4
    10
    2
    3
    

    3、假若筛选标准不能轻松表示在列表推导式恐怕生成器表达式中,比如筛选进度涉及部分老大管理依然更头晕目眩的底细,能够设想将拍卖筛选逻辑的代码放到单独的函数中,然后使用内建的filter()函数管理。

    values=['1','2','-3','-','N/A','4','5','%']
    def is_int(val): #将处理筛选逻辑的代码放到单独的函数
      try:
        x=int(val)
        return True
      except ValueError:
        return False
    ivals=list(filter(is_int,values)) #使用filter(func,list)进行过滤
    print(ivals)
    

    皇家赌场,运维结果:

    ['1', '2', '-3', '4', '5']
    

    filter(func,list)会成立二个迭代器,假设想要列表情势的结果,需接纳list()将结果转为列表。

    补充:

    用新值替换掉不满足标准的值,而不是抛弃它们,可透过将筛选标准移到3个口径表达式中来轻易完成。

    # Negative values clipped to 0
    neg_clip = [n if n > 0 else 0 for n in mylist]
    print('负数替换为0,结果:',neg_clip)
    # Positive values clipped to 0
    pos_clip = [n if n < 0 else 0 for n in mylist]
    print('正数替换为0,结果:',pos_clip)
    '''
    

    运转结果:

    mylist= [1, 4, -5, 10, -7, 2, 3, -1]
    负数替换为0,结果: [1, 4, 0, 10, 0, 2, 3, 0]
    正数替换为0,结果: [0, 0, -5, 0, -7, 0, 0, -1]
    

    值得推荐介绍的工具itertools.compress(),它承受三个可迭代对象以及叁个布尔接纳器种类作为输入。

    若果想把对一个行列的筛选结果施加到另三个连锁的队列上时,就能够要命有效。

    # 采用筛选工具itertools.compress()
    addresses = [
      '5412 N CLARK',
      '5148 N CLARK',
      '5800 E 58TH',
      '2122 N CLARK',
      '5645 N RAVENSWOOD',
      '1060 W ADDISON',
      '4801 N BROADWAY',
      '1039 W GRANVILLE',
    ]
    counts = [ 0, 3, 10, 4, 1, 7, 6, 1]
    from itertools import compress
    more5 = [ n > 5 for n in counts ]
    a = list(compress(addresses, more5))
    print(a)
    

    运营结果:

    ['5800 E 58TH', '1060 W ADDISON', '4801 N BROADWAY']
    

    此地的主假诺率先创造一个布尔连串,用来表示哪个成分可满意大家的标准。然后compress()函数挑选出满意布尔值为True的照料成分。

    filter()函数同样,平常情形下compress()函数重临一个迭代器,若供给回到列表则需利用list()将结果转为列表。

    (代码摘自《Python Cookbook》)

    更加多关于Python相关内容感兴趣的读者可查阅本站专项论题:《Python数据结构与算法教程》、《Python函数使用技术总计》、《Python字符串操作技能汇总》、《Python入门与进级卓越教程》及《Python文件与目录操作本事汇总》

    盼望本文所述对我们Python程序设计有着辅助。

    cookbook(数据结构与算法)筛选及领取连串兰月素的章程,pythoncookbook 本文实例讲述了Python筛选及领取连串相月素的措施。分享给我们供...

    [2, 7, 3, 0, 8]

    何以缓慢解决集结难点?

    补充:

    应用timeit测试三种办法的运营速度得到:使用列表剖析的速度越来越快,但双边皆比通用做法迭代要快

    {‘li_ming':90,'xiao_hong':60,'li_kang':95,'bei_men':九8} 中值高于90的项

    运作结果:

    from random import randint
    data = [randint(-10,10) for _ in range(10)]
    # filter 接收两个参数,第一个参数为过滤条件,第二个参数为过滤范围
    f = filter(lambda x: x>=0, data)
    for j in f:
     print(j)
    
    #!/usr/bin/python3
    
    from random import randint
    
    
    def filter_l(data):
      print(data.items())
      # 把字典转换成dict_items,循环里面的key和value,满足if条件返回对应的key和value值
      return {k: v for k, v in data.items() if v > 90}
    
    if __name__ == '__main__':
      # 字典生成式
      data = {x: randint(0, 100) for x in range(10)}
      print(data)
      new_l = filter_l(data)
      print(new_l, type(new_l))
    

    (代码摘自《Python Cookbook》)

    运维结果:

    #!/usr/bin/python3
    
    
    def filter_l(data):
      res = []
      for i in data:
        if i > 0:
          res.append(i)
      return res
    
    if __name__ == '__main__':
      data = [3, 9, -1, 10, -2]
      new_l = filter_l(data)
      print(new_l)
    
    ['5800 E 58TH', '1060 W ADDISON', '4801 N BROADWAY']
    

    行使列表分析(列表推导式)

    一.过滤掉列表[3,9,-1,10.-2......] 中负数
    二.筛选出字典

    此间的珍视是第2创立一个布尔类别,用来表示哪个元素可满足我们的尺码。然后compress()函数挑选出满意布尔值为True的对应成分。

    import random
    data = set(random.randint(-10,10) for _ in range(10))
    # print(data)
    # 筛选集合中能被2整除的数
    res = {i for i in data if i % 2 ==0}
    print(res)
    

    以上正是本文的全部内容,希望对大家的读书抱有援救,也愿意大家多多支持脚本之家。

    问题:领到出行列中的值可能依据一些正式对队列做去除

    使用filter函数

    你也许感兴趣的作品:

    • Python三.四兑现从HTTP代理网址批量到手代理并筛选的章程言传身教
    • python获取网页中兼有图片并筛选内定分辨率的不2秘籍
    • python素数筛选法分析
    • python使用筛选法计算小于给定数字的全部素数
    • Python使用re模块完成新闻筛选的章程
    • python 用正则表明式筛选文本音信的实例
    • Python完毕多规格筛选目的数据成效【测试可用】
    • python筛选出多少个文件中重复行的办法
    • Python cookbook(数据结构与算法)筛选及领取类别夷则素的秘籍
    • Python实用技能之列表、字典、集结中依据标准筛选数据详解
    mylist = [1, 4, -5, 10, -7, 2, 3, -1]
    print('mylist=',mylist)
    # 使用生成器表达式
    pos = (n for n in mylist if n > 0)
    print('生成器为',pos)
    for x in pos:
     print(x)
    

    你大概感兴趣的作品:

    • python怎么样在列表、字典中筛选数据
    • Python三.四贯彻从HTTP代理网址批量到手代理并筛选的章程言传身教
    • python获取网页中享有图片并筛选钦赐分辨率的不二等秘书诀
    • python素数筛选法分析
    • python使用筛选法总括小于给定数字的兼具素数
    • Python使用re模块完毕信息筛选的章程
    • python 用正则表明式筛选文本音信的实例
    • Python完结多规格筛选指标数据功用【测试可用】
    • python筛选出三个文件中重复行的办法
    • Python cookbook(数据结构与算法)筛选及领取连串巧月素的章程
    #!/usr/bin/python3
    
    from random import randint
    
    
    def filter_l(data):
      # 循环data列表,把值一个一个取出 是否满足if条件,满足True返回x生成一个新列表
      return [x for x in data if x >=0 ]
    
    if __name__ == '__main__':
      # 列表生成10个 -10 到 10 的随机数
      data = [randint(-10, 10) for _ in range(10)]
      print(data)
      # new_l 为可迭代对象
      new_l = filter_l(data)
      print(list(new_l), type(new_l))
    

    本文由68399皇家赌场发布于集群主机,转载请注明出处:python怎么样在列表、字典中筛选数据

    关键词: 68399皇家赌场

上一篇:皇家赌场:Python递归完结Hanno塔算法示例

下一篇:没有了