python初学者必须吃透的这些内置函数( 五 )


语法:zip([iterable, ...])
参数:iterable 一个或多个迭代器
创建一个聚合了来自每个可迭代对象中的元素的迭代器:x = [3,2,1]y = [4,5,6]list(zip(y,x))[(4, 3), (5, 2), (6, 1)]#搭配for循环 , 数字与字符串组合 a = range(5)b = list('abcde')[str(y)+str(x) for x,y in zip(a,b)]['a0', 'b1', 'c2', 'd3', 'e4']#数数相乘list1 = [2,3,4]list2 = [5,6,7]for x,y in zip(list1,list2):print(x,'*',y,'--',x*y)2 * 5 -- 103 * 6 -- 184 * 7 -- 28#元素个数与最短的列表一致list(zip(x,b)) [(3, 'a'), (2, 'b'), (1, 'c')]s#与 zip 相反 , zip(* ) 可理解为解压 , 返回二维矩阵式a1, a2 = zip(*zip(a,b))a1(0, 1, 2, 3, 4)a2('a', 'b', 'c', 'd', filter()描述:filter() 函数用于过滤序列 , 过滤掉不符合条件的元素 , 返回由符合条件元素组成的新列表 。该接收两个参数 , 第一个为函数 , 第二个为序列 , 序列的每个元素作为参数传递给函数进行判断 , 然后返回 True 或 False , 最后将返回 True 的元素放到新列表中 。
语法:filter(function, iterable)
参数:

  • function -- 判断函数 。
  • iterable -- 可迭代对象 。
fil = filter(lambda x: x>10,[1,11,2,45,7,6,13])fil <filter at 0x28b693b28c8>list(fil)[11, 45, 13]def is_odd(n):return n % 2 == 1 newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])print(list(newlist))[1, 3, 5, 7, 9]map()描述:map() 会根据提供的函数对指定序列做映射 。返回一个将 function 应用于 iterable 中每一项并输出其结果的迭代器
语法:map(function, iterable, ...)
参数:
  • function -- 函数
  • iterable -- 一个或多个序列
def square(x) :# 计算平方数return x ** 2list(map(square, [1,2,3,4,5]))# 计算列表各个元素的平方[1, 4, 9, 16, 25]list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))# 使用 lambda 匿名函数[1, 4, 9, 16, 25]# 提供了两个列表 , 对相同位置的列表数据进行相加list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))[3, 7, 11, 15, 19]list(map(lambda x: x%2==1, [1,3,2,4,1]))[True, True, False, False, True]三、和作用域相关locals()描述:locals() 函数会以字典类型返回当前位置的全部局部变量 。对于函数, 方法, lambda 函式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True 。
语法:locals()
globals()描述: 函数会以字典类型返回当前位置的全部全局变量 。
语法:globals()
参数:无
a='runoob'print(globals()) # globals 函数返回一个全局变量的字典 , 包括所有导入的变量 。四、迭代器生成器range()描述:range() 函数可创建一个整数列表 , 一般用在 for 循环中 。
语法:range(start, stop[, step])
参数:
  • start: 计数从 start 开始 。默认是从 0 开始 。例如range(5)等价于range(0 ,  5);
  • stop: 计数到 stop 结束 , 但不包括 stop 。例如:range(0 ,  5) 是[0, 1, 2, 3, 4]没有5
  • step:步长 , 默认为1 。例如:range(0 , 5)等价于 range(0, 5, 1)
案例:
list(range(10))[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] list(range(1, 11))# 从 1 开始到 11[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]list(range(0, 30, 5))[0, 5, 10, 15, 20, 25]for i in range(5):print(i)01234next()描述:next() 返回迭代器的下一个项目 。next() 函数要和生成迭代器的iter() 函数一起使用 。
语法:next(iterator[, default])
参数:
  • iterator -- 可迭代对象
  • default -- 可选 , 用于设置在没有下一个元素时返回该默认值 , 如果不设置 , 又没有下一个元素则会触发StopIteration异常 。
不加默认值的情况 , 最后会报错StopIteration
it = iter([5,3,4,1])next(it)5next(it)3next(it)4next(it)1next(it)Traceback (most recent call last):File "<ipython-input-392-bc1ab118995a>", line 1, in <module>next(it)StopIteration加默认值的情况 , 最后迭代完了 , 会返回默认值
it = iter([0,1,2,3,4])next(it,'结束了')0next(it,'结束了')1next(it,'结束了')2next(it,'结束了')3next(it,'结束了')4next(it,'结束了')'结束了'iter()描述:返回一个 iterator 对象
语法:iter(object[, sentinel])
参数: