6.python3实用编程技巧进阶(一)
发布时间:2020-12-20 11:00:24 所属栏目:Python 来源:网络整理
导读:1.1.如何在列表中根据条件筛选数据 # 1.1.如何在列表中根据条件筛选数据 data = [-1,2,3,-4,5 ] # 筛选出data列表中大于等于零的数据 # 第一种方法,不推荐 res1 = [] for x in data: if x = 0: res1.append(x) print (res1) # 第二种用列表解析,推荐使用 r
1.1.如何在列表中根据条件筛选数据# 1.1.如何在列表中根据条件筛选数据 data = [-1,2,3,-4,5] #筛选出data列表中大于等于零的数据 #第一种方法,不推荐 res1 = [] for x in data: if x >= 0: res1.append(x) print(res1) #第二种用列表解析,推荐使用 res2 = [ x for x in data if x >= 0] print(res2) #第三种用filter函数 res3 = list(filter(lambda x : x>= 0,data)) print(res3) 1.2.如何在列表中根据条件筛选数据# 1.2.如何在列表中根据条件筛选数据 from random import randint #创建学生字典,学号为1~20,分数为50~100随机 d = {‘student%d‘% i: randint(50,100) for i in range(1,21)} print(d) #过滤出分数为90的学生字典 #第一种方法 d1 = {k:v for k,v in d.items() if v >= 90} print(d1) #第二种方法 d2 = dict(filter(lambda item:item[1] >= 90,d.items())) print(d2) 1.3.如何在集合中根据条件筛选数据# 1.3.如何在集合中根据条件筛选数据 from random import randint s = {randint(0,20) for _ in range(20)} print(s) #筛选出能被3整除的数 s1 = {x for x in s if x % 3 == 0} print(s1) 1.4.如何为元祖中的每个元素命名,提高程序可读性?如下元祖,通过函数判断年龄和性别,但是这样代码可读性很差,别人并不知道student[1],student[2]代表什么意思。如何解决呢 def func(student): if student[1] < 18 : pass if student[2] == ‘male‘: pass student = (‘derek‘,22,‘male‘,‘[email?protected]‘) func(student) 方案一:定义枚举类型 #1.4..如何为元祖中的每个元素命名,提高程序可读性 def func(student): if student[1] < 18 : pass if student[2] == ‘male‘: pass s1 = (‘derek‘,‘[email?protected]‘) #第一种:使用枚举 from enum import IntEnum class StudentEnum(IntEnum): NAME = 0 AGE = 1 SEX = 2 EMAIL = 3 print(s1[StudentEnum.NAME]) print(s1[StudentEnum.AGE]) 方案二:使用标准库中collections.namedtuple替代内置tuple #1.4..如何为元祖中的每个元素命名,提高程序可读性 def func(student): if student[1] < 18 : pass if student[2] == ‘male‘: pass s1 = (‘derek‘,‘[email?protected]‘) #第一种:使用枚举 from enum import IntEnum class StudentEnum(IntEnum): NAME = 0 AGE = 1 SEX = 2 EMAIL = 3 print(s1[StudentEnum.NAME]) print(s1[StudentEnum.AGE]) #第二种:使用标准库中collections.namedtuple替代内置tuple from collections import namedtuple Student = namedtuple(‘student‘,[‘name‘,‘age‘,‘sex‘,‘email‘]) s2 = Student(‘derek‘,‘[email?protected]‘) print(s2[0]) #derek # 可以通过s2.name获取姓名 print(s2.name) #derek (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |