python如何在列表、字典中筛选数据

栏目: 编程语言 · Python · 发布时间: 7年前

内容简介:这篇文章主要为大家详细介绍了python如何在列表、字典中筛选数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

python如何在列表、字典中筛选数据?

实际问题有哪些?

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

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

3.筛选出集合{3,9,-1,10.-2......]中能被3整除的数

问题1如何解决?

最普通方法:

#!/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)

如何解决列表问题?

初始化列表: 生成 -10 到 10 的随机数列表,去除负数

1. filter方法:

#!/usr/bin/python3
 
from random import randint
 
 
def filter_l(data):
  # 循环data列表,把值一个一个取出 交个lambda中x,如何lambda函数为True,返回x生成一个新的filter对象
  return filter(lambda x: x >= 0, data)
 
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))

2. 列表解析:

#!/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))

运行速度比较:解析 > filter > 普通

如何解决字典?

字典解析,筛选数据:

#!/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))

如何解决集合问题?

#!/usr/bin/python3
from random import randint
 
 
def filter_l(data):
  # 迭代集合中值,满足条件为True返回x
  return {x for x in data if x % 3 == 0}
 
if __name__ == '__main__':
  # 集合生成式
  data = {randint(0, 100) for x in range(10)}
  print(data)
  new_l = filter_l(data)
  print(new_l, type(new_l))

如何逻辑整理?

无论是解析器还是普通方法,都需要for循环,if判断,逻辑都是满足条件返回值,过滤出满足条件的值,无论是生成器还是解析器都满足这个格式:“ 返回值 for循环 if判断 “,通过lambda满足格 式:“lambda 输入值:条件, 格式化数据


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法交易:制胜策略与原理

算法交易:制胜策略与原理

[美]欧内斯特·陈(Ernest P. Chan) / 高闻酉、黄蕊 / 机械工业出版社 / 49.00

本书是一本引人入胜、信息量大、覆盖各类交易策略的图书。无论个人投资者,还是机构投资者,都可以借鉴和使用其中的策略。本书中的策略大致可分为均值回归系统和动量系统两大类。书中不仅介绍了如何使用每种类别的交易策略,更解释了各种策略之所以有效的原因。本书始终以简单、线性的交易策略为重心,因为复杂的交易策略容易受到过度拟合及数据窥探的侵害。数学和软件是算法交易的两条腿。本书用到了一定程度的数学知识,使其对各......一起来看看 《算法交易:制胜策略与原理》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具