Python---如何在列表、字典、集合中根据条件筛选数据?---0001

如何在列表、字典、集合中根据条件筛选数据?
先简要介绍 列表、字典、集合的基本形式

实际案例:

  • 过滤掉列表[3,4,-1,-5,8,9]中的负数
  • 筛选字典{‘lili’:79,‘jim’:88,…}中高于90的项
  • 筛选集合{77,89,23,24,…}中可以被3整除的元素

列表解析

import random import randint
a = [randint(-10,10) for i in range(10)]
#a =[-8, -8, -7, -5, -4, -8, -8, 9, 2, 7]
a = [i for i in a if i>0]
#a = [9, 2, 7]

内置函数 filter

filter是过滤器的意思

import random import randint
a = [randint(-10,10) for i in range(10)]
#a =[-8, -8, -7, -5, -4, -8, -8, 9, 2, 7]
list(filter( lambda x:x>0 ,a))
#[9, 2, 7]

以上是针对列表的。

a = set(a)
#{-8, -7, -5, -4, 2, 7, 9}
{i for i in a if i%==0}
#{9}

或者:

a = [ randint(-10,10) for _ in range(10)]
#[3, -7, -6, 3, -7, 9, 2, 6, -1, -2]
set(filter( lambda x:x>0 ,a))
#{2, 3, 6, 9}

以上是针对集合的。可以发现,集合和列表是类似的

字典解析

d = {i:randint(60,100) for i in range(1,20)}
'''{1: 77,
 2: 68,
 3: 65,
 4: 80,
 5: 72,
 6: 90,
 7: 82,
 8: 72,
 9: 87,
 10: 94,
 11: 98,
 12: 96,
 13: 83,
 14: 97,
 15: 86,
 16: 74,
 17: 96,
 18: 61,
 19: 100}'''
{k:v for k,v in  d.items() if v>90}
#{3: 91, 10: 95, 19: 97}

实际案例–学生系统中的信息为固定格式(名字,年龄,性别,邮箱)

例子

  1. (‘Jim’, 16, ‘male’,‘jim2680@gami’)
  2. (‘KH’, ‘23’, 'fa’male, ‘368312800@163.com’)

方法一 全局变量
或许需要一个类,在这个类中定义全局变量。比如

class Student:
	Name,age,sex,email = range(4)
	def xx:
		pass

也可以用数字枚举,代码如下:

from enum import IntEnum
class StudentEnum(IntEnum):#继承了IntEnum
	#定义属性
	name = 0
	age = 1
	sex = 2
	email = 3

可以通过StudentEnum.name来调用name的属性
	

方法二 调用collections中的方法namedtuple

from collections import namedtuple
student = namedtuple('student',['name','age','sex','email'])
s1 = student('jim',13,'male','13344@163.com')
#其中 s1.name = 'jim'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值