为了账号安全,请及时绑定邮箱和手机立即绑定

Python的zip从根本上不同于矩阵转置吗?

Python的zip从根本上不同于矩阵转置吗?

慕田峪7331174 2021-03-31 13:23:19
据我了解,pythons zip接受一系列可迭代,然后将迭代器返回到包含每个迭代器中一个元素的元组,这样第一个元组将包含每个迭代器中的第一个元素。例如:A = [1, 2, 3]B = [4, 5, 6]for a, b in zip(A, B):    print(f"{a}, {b}")打印输出:1, 42, 53, 6分别换位A和B,然后将A和B连接起来,就得到了确切的矩阵。两种操作在结果上是否存在差异,或者它们基本上是同一件事?
查看完整描述

1 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

在有操作的情况下,您可以将操作描述为矩阵转置zip(*matrix)(或者,在您的示例中,将行存储为列表,并存储在单独的变量中,而不是在列表中zip(a, b))是矩阵转置。(即使matrixorab是迭代器或某种虚拟序列或惰性序列,也是如此-它基本上尽可能地延迟它们的转置。)

但是,它稍微更笼统。

例如,如果您有不相等的列表,则仍然可以将zip它们(zip将被截断为最短列表的长度),并且在任何有意义的意义上,这实际上都不是“矩阵转置”。

您甚至可以将其与无限长的迭代器一起使用:无需编写即可zip(itertools.count(), a)为您提供与相同的功能。enumerate(a)zip(itertools.islice(itertools.count(), len(a)), a)

另外,请注意zip(*[iter(s)]*n)文档中的分块用法。试图以转置迭代器矩阵的方式来思考,只会使人困惑而不是启迪,除非您已经凭直觉理解了该习惯用语。


查看完整回答
反对 回复 2021-04-27
  • 1 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号