亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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}, ")打印輸出: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 關注
  • 237 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號