分类目录:《人工智能与大数据面试指南》总目录
《人工智能与大数据面试指南》系列下的内容会持续更新,有需要的读者可以收藏文章,以及时获取文章的最新内容。
map
函数map(function, iterable, ...)
根据提供的函数对指定序列做映射。function
为函数,iterable
是一个或多个序列。Python 2.x 返回列表,而Python 3.x返回迭代器。
def square(x):
return x ** 2
map(square, [1,2,3,4,5]) # 计算列表各个元素的平方
Python 3.x返回迭代器:
<map at 0x22c42156860>
使用list()
转换为列表 / 使用lambda匿名函数 / 传入两个可迭代对象:
list(map(square, [1,2,3,4,5]))
list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))
list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))
迭代器是一种对象,该对象包含值的可计数数字。迭代器是可迭代的对象,这意味着可以遍历所有值。从技术上讲,在Python中,迭代器是实现迭代器协议的对象,它包含方法 __iter__()
和__next__()
。列表、元组、字典和集合都是可迭代的对象。它们是可迭代的容器,您可以从中获取迭代器(Iterator)。所有这些对象都有用于获取迭代器的iter()
方法:
mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)
print(next(myit))
print(next(myit))
print(next(myit))
输出:
apple
banana
cherry
要把对象/类创建为迭代器,必须为对象实现__iter__()
和__next__()
方法。__iter__()
方法的作用相似,您可以执行操作(初始化等),但必须始终返回迭代器对象本身。__next__()
方法也允许您执行操作,并且必须返回序列中的下一个项目。如果你有足够的next()
语句,或者在for
循环中使用,为了防止迭代永远进行,我们可以使用StopIteration
语句。在 next() 方法中,如果迭代完成指定的次数,我们可以添加一个终止条件来引发错误:
class MyClass:
def __init__(self):
self.l = [1,2,3,4,5]
def __iter__(self):
self.ind = 0
return self
def __next__(self):
iter_ind = self.ind
self.ind += 1
if iter_ind >= 5:
raise StopIteration
return self.l[iter_ind]
obj = MyClass()
for i in obj:
print(i)
输出:
1
2
3
4
5