python enumerate()函数
用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中,可同时得到数据对象的值及对应的索引值。 举个例子:
代码语言:javascript复制for i in enumerate([i for i in range(5)]):
print(i)
今天去腾讯笔试的一道 enumerate 题:
代码语言:javascript复制s=['a','b','c']
dict1 = {j:k for k,j in enumerate(s)}
print(dict1)
print(dict1.keys())
print(dict1.values())
输出结果为:
python 中 map()函数
map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。 也就是说会根据提供的函数对指定序列做映射。Python 2.x 返回列表。python3返回的是一个迭代器。
代码语言:javascript复制def f(x):
return x*x
print(map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
使用lamdba函数
代码语言:javascript复制print(map(lambda x: x *x, [1, 2, 3, 4, 5]))
Python filter() 函数
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
同上面的map一样,Pyhton2.7 返回列表,Python3.x 返回迭代器对象
代码语言:javascript复制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,3,5,7,9
使用lambda函数:
代码语言:javascript复制newlist = filter(lambda x:x%2==1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
Python reduce() 函数
reduce() 函数会对参数序列中元素进行累积。
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作: 用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
需要先导入reduce
代码语言:javascript复制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 匿名函数
python枚举Enum
使用枚举需要导入Enum
代码语言:javascript复制from enum import Enum
定义一个类
代码语言:javascript复制class Weekdays(Enum):
Monday=1
Tuesday=2
Wedsday=3
#遍历枚举标签
for v in Weekdays.__members__:
print(v)
代码语言:javascript复制#遍历枚举类型、标签、值
for v in Weekdays.__members__ .items():
print(v)
代码语言:javascript复制print(Weekdays.Monday) # >>> Weekdays.Monday
枚举的意义重在标签而不在于数值,使用 print(Weekdays.Monday) 打印结果不是1而是Weekdays.Monday,这也符合枚举的意义
代码语言:javascript复制#获取名字和值
print(Weekdays.Monday.name)
print(Weekdays.Monday.value)