python高阶函数和枚举

举报
冬晨夕阳 发表于 2022/03/30 01:58:40 2022/03/30
【摘要】 python enumerate()函数 用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中,可同时得到数据对象的值及对应的索引值。...

python enumerate()函数

用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中,可同时得到数据对象的值及对应的索引值
举个例子:

for i in enumerate([i for i in range(5)]):
    print(i)

  
 
  • 1
  • 2

在这里插入图片描述
今天去腾讯笔试的一道 enumerate 题:

s=['a','b','c']
dict1 = {j:k for k,j in enumerate(s)}
print(dict1)
print(dict1.keys())
print(dict1.values())

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

输出结果为:
在这里插入图片描述

python 中 map()函数

map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
也就是说会根据提供的函数对指定序列做映射。Python 2.x 返回列表。python3返回的是一个迭代器。

def f(x):
    return x*x
print(map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]))

  
 
  • 1
  • 2
  • 3

使用lamdba函数

print(map(lambda x: x *x, [1, 2, 3, 4, 5]))

  
 
  • 1

Python filter() 函数

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

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

同上面的map一样,Pyhton2.7 返回列表,Python3.x 返回迭代器对象

def is_odd(n):
    return n % 2 == 1
newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(newlist)
for i in newlist:
    print(i,end=' ')

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

输出的结果是 1,3,5,7,9

使用lambda函数:

newlist = filter(lambda x:x%2==1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

  
 
  • 1

Python reduce() 函数

reduce() 函数会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作: 用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

需要先导入reduce

from functools import reduce

def add(x, y) :            # 两数相加
   return x + y

print(reduce(add, [1, 2, 3, 4, 5]))
# 计算列表和:1+2+3+4+5

print(reduce(lambda x, y: x+y, [1,2,3,4,5]))  # 使用 lambda 匿名函数

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

python枚举Enum

使用枚举需要导入Enum

from enum import Enum

  
 
  • 1

定义一个类

class Weekdays(Enum):
    Monday=1
    Tuesday=2
    Wedsday=3
#遍历枚举标签
for v in Weekdays.__members__:
    print(v)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

#遍历枚举类型、标签、值
for v in Weekdays.__members__ .items():
    print(v)

  
 
  • 1
  • 2
  • 3

在这里插入图片描述

print(Weekdays.Monday)   # >>> Weekdays.Monday

  
 
  • 1

枚举的意义重在标签而不在于数值,使用 print(Weekdays.Monday) 打印结果不是1而是Weekdays.Monday,这也符合枚举的意义

#获取名字和值
print(Weekdays.Monday.name)
print(Weekdays.Monday.value) 

  
 
  • 1
  • 2
  • 3

在这里插入图片描述

文章来源: blog.csdn.net,作者:考古学家lx,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_43582101/article/details/89926119

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。