【Python PEP 笔记】201 - 同步迭代 / zip() 函数的使用方法

这篇具有很好参考价值的文章主要介绍了【Python PEP 笔记】201 - 同步迭代 / zip() 函数的使用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文地址:https://peps.python.org/pep-0201/
PDF 地址:

什么是同步迭代

同步迭代就是用 for 一次循环多个序列。
类似于这样的东西:

arr1 = [1, 2, 3, 4]
arr2 = ['a', 'b', 'c', 'd']
for a, b in arr1, arr2:
	print(a, b)

使用 map 实现

for a, b in map(lambda x, y: (x, y), arr1, arr2):
    print(a, b)

原文为 Python 2,实现如下:

for a, b in map(None, arr1, arr2):
   print(a, b)

Python 3 map 函数的第一个参数不能为 None 了。

使用新函数 zip 实现

使用 map 不方便,最明显的一点就是每次都要自己写一个 lambda 才行。

为了更方便地实现同步迭代,PEP 201 提出了一个新函数 zip 来实现这个功能。

for a, b in zip(arr1, arr2):
    print(a, b)

zip 函数的其他用途

转置表格

例如

data = [
    ['id', 'name', 'income'],
    ['1', 'John', 200],
    ['2', 'Jane', 300],
    ['3', 'Joe', 100],
    ['4', 'Jill', 400],
    ['5', 'Jim', 230],
]

print(list(zip(*data)))

*data 相当于 zip(data[0], data[1], ..., data[n-1])
zip() 函数在 Python 2 中返回的是 list;在 Python 3 中返回的是迭代器,如果要输出展示,要先转换为 list

得到结果

[('id', '1', '2', '3', '4', '5'), ('name', 'John', 'Jane', 'Joe', 'Jill', 'Jim'), ('income', 200, 300, 100, 400, 230)]

很轻松就把行转成了列。

还可以利用 zip() 计算平均收入:

income_list = list(zip(*data[1:]))[2]
print('average income: ', sum(income_list) / len(income_list))

data[1:] 这里切片是为了去除表格第一行的标题。然后 [2] 是因为收入是表格的第三列。文章来源地址https://www.toymoban.com/news/detail-674363.html

到了这里,关于【Python PEP 笔记】201 - 同步迭代 / zip() 函数的使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python 的zip函数

    在Python中, zip() 是一个内置函数,用于将多个可迭代对象(例如列表、元组等)打包成一个元组的迭代器。它接受多个参数,每个参数代表一个可迭代对象,并返回一个迭代器,每次迭代返回一个包含来自每个可迭代对象的元素组成的元组。 下面是 zip() 函数的基本语法:

    2024年02月10日
    浏览(26)
  • Python的zip函数和enumerate函数

    有一位程序员小张,他正在为公司的一个项目编写代码。这个项目需要处理两个列表,一个是存储了学生姓名的列表,另一个是存储了学生成绩的列表。 小张需要把这两个列表对应的元素组合起来,最终得到一个包含了姓名和成绩的列表。小张在查阅了Python的文档之后,决定

    2024年02月08日
    浏览(38)
  • Python 基础 - 迭代器 / 迭代器对象 / 可迭代对象 / range函数

    目录 1. 迭代器 2.迭代器对象 3. 可迭代对象 4. range函数 1. 迭代器 当类中定义了__iter__和 __next__两个方法 __iter__: 返回对象本身,即self __next__: 返回下一个数据,如果没有数据,则抛出StopIteration异常 2.迭代器对象 通过迭代器类实例化创建的迭代器对象 可以通过 obj.__next__() 或

    2023年04月27日
    浏览(26)
  • 一文详解列表,元组,字典,集合,生成器,迭代器,可迭代对象,zip,enumerate

      列表,元组,字典,集合,生成器都是 python 中的可迭代对象,使用的时候经常忘记,通过这篇博文总结一下。   列表( list )是 Python 中的一种数据结构,它可以存储不同类型的数据。不同元素以逗号分隔。 使用方括号[]表示开始和结束。 不同元素以逗号分隔。 每个

    2024年02月07日
    浏览(60)
  • python中函数,装饰器,迭代器,生成器

    1.函数可以作为参数进行传递 2.函数可以作为返回值进行返回 3.函数名称可以当成变量一样进行赋值操作 作用:在不改变原有函数调用的情况下,给函数增加新的功能          即可以在函数前面增加新的功能,但不改变原来的代码 可迭代的数据类型都会提供迭代器,即可以

    2024年02月07日
    浏览(33)
  • Python——迭代器(可迭代、可迭代对象、迭代器、遍历本质、iter函数、next函数、__iter__方法、__next__方法、自定义可迭代对象与自定义迭代器、for循环本质)

    迭代(iter) 我们经常听说过\\\"版本迭代\\\"这个词,意思是在原来版本的基础上,再提升一个版本的过程。那么我们仅仅看看\\\"迭代\\\"这个词,会发现迭代就是一个根据原来的状态决定本次状态的过程 迭代应用于Python中,迭代具体是指根据原来的数据输出(并不一定是要打印,也可

    2024年02月04日
    浏览(37)
  • 【python学习】基础篇-编码与解码 decode()方法 将对象元素打包成元组zip()函数

    在 Python 中使用字符串对象的encode()方法来实现编码。 encode0 方法是字符串对象内置的一个实现方法用于实现编码操作。语法格式如下: str.encode([encoding[,errors]]) 解码字符串则需要使用 bytes 对象的 decode0 方法来实现。 bytes.decode([encoding[,errors]]) 参数encoding 表示要进行编码的字符

    2023年04月19日
    浏览(30)
  • 【python基础语法六】迭代器,生成器,推导式和高阶函数

    内置函数: dir 获取当前对象的内置成员 高阶函数 : 能够把函数当成参数传递的就是高阶函数 (map ,filter ,reduce , sorted) 案例: 1. enumerate 2. zip 元组推导式是生成器( generator ) (1) 基本语法 (2) 优化生成器代码 (3) send 的使用方式 (给上一个 yield 发送数据) (4) yield from 的使用 (5) 案例

    2024年02月02日
    浏览(34)
  • Python如何按PEP8风格自动排版代码

    Autopep8是一个将Python代码自动排版为PEP8风格的小工具。它使用pep8工具来决定代码中的哪部分需要被排版。Autopep8可以修复大部分pep8工具中报告的排版问题。 安装步骤如下: 示例代码: 运行命令前代码的排版 (保存在test_autopep8.py) 运行命令 运行命令后代码的排版

    2024年02月19日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包