一、zip()函数

1.语法:

zip(iterable, ...)

参数说明:

iterable,...—— 一个或多个迭代器;

在python2中:

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

在python3中:

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。

我们可以使用 list() 转换来输出列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

2.返回值:

python2直接返回一个元组列表

python3返回一个对象,可以用list(),tuple()把这个对象转成列表或者元组

3.用法:(python3环境)

>>>a = [1,2,3]

>>> b = [4,5,6]

>>> c = [4,5,6,7,8]

>>> zipped = zip(a,b) # 返回一个对象

>>> zipped

>>> list(zipped) # list() 转换为列表

[(1, 4), (2, 5), (3, 6)]

>>> list(zip(a,c)) # 元素个数与最短的列表一致

[(1, 4), (2, 5), (3, 6)]

>>> zipped = zip(a,b)

>>> a1, a2 = zip(*ziped) # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式

>>> a1

(1, 2, 3)

>>> a2

(4, 5, 6)

>>>c = ('a','b','c')

>>>d = (1,2,3)

>>>aa = zip(c,d)

>>>list(aa)

[('a', 1), ('b', 2), ('c', 3)]

4.关于用’*‘解包

1.带*号的表达式获取序列剩余部分

>>> a,b,*c = 1,2,3,4,5

>>> a

1

>>> b

2

>>> c

[3, 4, 5]

2.带*号的表达式获取序列中间部分

>>> a,*b,c = 1,2,3,4,5

>>> a

1

>>> b

[2, 3, 4]

>>> c

5

3.带*号的表达式获取序列前面部分

>>> *a,b,c = 1,2,3,4,5

>>> a

[1, 2, 3]

>>> b

4

>>> c

5

4.嵌套解包

>>> (a,b),(c,d) = (1,2),(3,4)

>>> a

1

>>> b

2

>>> c

3

>>> d

4

>>> a,b

(1, 2)

>>> a,b,c,d

(1, 2, 3, 4)

二、map()函数

1.语法:

map(func, iterable, ...)

map()会根据提供的函数对指定序列做映射。

第一个参数 func 是函数名字,它把函数 func 依次作用在后面每个 iterable 的每个元素上,然后并返回执行结果。

2.返回值:

python2中:返回一个新的列表。

python3中:返回一个迭代器

3.用法:(python3环境)

>>>def square(x) : # 计算平方数

... return x ** 2

...

>>> m = map(square, [1,2,3,4,5]) # 计算列表各个元素的平方

>>> list(m)

[1, 4, 9, 16, 25]

>>> m = map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数

>>> list(m)

[1, 4, 9, 16, 25]

# 提供了两个列表,对相同位置的列表数据进行相加

>>> m = map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])

>>> list(m)

[3, 7, 11, 15, 19]

4.map()的特殊情况:函数是None

在python2中:

如果函数是 None,自动假定一个‘identity’函数,这时候就是模仿 zip()函数,

>>>l=[1,2,3,4]

>>>x=map(None,l)

>>>print(x)

[1,2,3,4]

当有多个列表时,相同位置的元素归并到一个元组。如:

>>> print map(None, [4,5,6],[3,2,1])

[(4, 3), (5, 2), (6, 1)]

列表长度不一致时,会用None补足,如:

>>> print map(None, [4,5,6],[3,2,1,0])

[(4, 3), (5, 2), (6, 1),(None,0)]

在 python3中:

在 python3中,由于map()返回是一个迭代器,所以在这种情况下,map()返回的这个对象其实是不可调用的

>>> m = map(None,[1,2,3,4])

>>> m

>>> list(m)

Traceback (most recent call last):

File "", line 1, in

TypeError: 'NoneType' object is not callable

关于map()函数的实现细节可以参考文章:map()函数

python map zip_python中的zip()函数和map()函数相关推荐

  1. python的zip_python中的zip()函数

    本文转自:http://www.jb51.net/article/53051.htm 本文实例讲述了Python中zip()函数的定义及用法,相信对于Python初学者有一定的借鉴价值.详情如下: 一 ...

  2. python在内存中生成Zip文件!

    python在内存中生成Zip文件! - 天真的好蓝啊 - 博客园 python在内存中生成Zip文件! import zipfile import StringIO class MemoryZipF ...

  3. python语言学习:python语言学习中的定义类、定义函数、封装api等详细攻略

    python语言学习:python语言学习中的定义类.定义函数.封装api等详细攻略 目录 python语言学习中的定义类 python语言学习中的定义函数 python语言学习中封装api pyth ...

  4. python双循环zip_Python 并行遍历zip()函数使用方法

    今天我们要讲主题是python并行遍历zip()函数使用方法.在讲range()函数使用方法时我们知道了,range()可以在for循环中是以非完备的方式遍历序列,那么zip()并行遍历又是怎么工作的 ...

  5. python——循环器(iterator)中count、cycle和repeat函数用法

    前言:本文讲解涉及到python中next()函数和join函数,不清楚可以查看下面博客自行了解. python--next()函数_xiaofengdada的博客-CSDN博客 python--jo ...

  6. python在工厂中的运用_Python常见工厂函数用法示例

    工厂函数:能够产生类实例的内建函数. 工厂函数是指这些内建函数都是类对象, 当调用它们时,实际上是创建了一个类实例. Python中的工厂函数举例如下: 1. int(),long(),float() ...

  7. python中比较重要的几个函数_【python】python re模块中几个比较重要的函数

    转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=22920230&id=3389387 re.match re.m ...

  8. 2. Python函数式编程中的字符串,元组,函数的分类,高阶函数,一篇文章都介绍一遍

    函数式编程中的字符串 在函数式编程中,经常用到 Python 字符串,因其是不可变数据结构. 字符串本身是一个对象,具备很多对象方法,与常识中函数的使用不太相同,例如下述代码 my_str = &qu ...

  9. Python练习 | Python3中的格式化输入输出之print函数

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 Python2版本和Python3 ...

最新文章

  1. MySQL基础day03_数据的导入、导出-MySQL 5.6
  2. 说几个著名的死循环:
  3. Linux命令free解读
  4. Mocha BSM基础架构管理——网络设备
  5. Ubuntu20.04 Desktop image 添加快捷方式
  6. CodeDay 北京站报名倒计时
  7. 面试题-ASP 与 ASP.Net的区别?
  8. vim“用sudo写”技巧如何工作?
  9. Aspect基础使用方法
  10. MySQL_12_ShardingJDBC实现读写分离与分布式事务
  11. 【pytorch】yolov4 实现对蛾子数据集的识别 以及 对蛾子图片二值化处理 实现 自动打标签标注。(本文重点在自动实现将图片转化为voc数据集)
  12. LCA实现的三种不同的方法
  13. 并查集的一些个人观点 以及克鲁斯卡尔算法的详解
  14. 腾讯云服务器使用ssh密钥登录--个人常遇到问题均解决
  15. 2022-2027年中国电力工程总承包行业市场全景评估及发展战略规划报告
  16. 梦想的脚步---C语言的学习与成长
  17. 黑客攻击-程序破解(1)
  18. Win7提速如何进行磁盘清理和碎片整理
  19. 京瓷5501i A3小册子打印设置
  20. 上周热点回顾(10.22-10.28)

热门文章

  1. python给列表中的字典按照字典中的某个键值进行排序
  2. Android listview viewholder
  3. blast | diamond 输出结果选择和解析 | 比对
  4. 作为AI的“辅助大臣”,区块链的前途不可限量
  5. 路由协议OSPF知识点汇总
  6. 【机器学习实战】第3章 决策树(Decision Tree)
  7. Vue.js下拉框-详细省市联动示例
  8. 微信小程序:字体保持大小
  9. Permission denied: user=root, access=WRITE, inode=/:hadoopuser:supergroup:drwxr-xr-x
  10. Nginx/LVS/HAProxy 负载均衡软件的优缺点详解