人工智能与大数据面试指南——Python

分类目录:《人工智能与大数据面试指南》总目录

《人工智能与大数据面试指南》系列下的内容会持续更新,有需要的读者可以收藏文章,以及时获取文章的最新内容。


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迭代器

迭代器是一种对象,该对象包含值的可计数数字。迭代器是可迭代的对象,这意味着可以遍历所有值。从技术上讲,在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

猜你喜欢

转载自blog.csdn.net/hy592070616/article/details/127592556